通过@Resource注解实现属性装配代码详解

 更新时间:2018年01月10日 13:51:35   作者:别闹了  
这篇文章主要介绍了通过@Resource注解实现属性装配代码详解,具有一定借鉴价值,需要的朋友可以参考下

本文主要探究的问题时使用@Resource注解实现属性装配,当中涉及依赖注入—手工装配,@Autowired和@Resource注解的区别等相关内容,具体如下。

使用Field注入(用于注解方式):注入依赖对象可以采用手工装配或者手工自动装配。在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果。

依赖注入—手工装配

手工装配依赖对象,在这种方式中又有两种编程方式。

1.在xml配置文件中,通过bean节点配置,如:

<bean id="orderService" class="cn.itcast.service.OrderServiceBean">
  //构造器注入
  <constructor-arg index="0" type="java.lang.String" value="xxx"/>
  //属setter方法注入
  <property name="name" value="zhao"/>
</bean>

2.在java代码中使用@Autowired或者@Resource注解方式进行装配。但我们需要在xml配置文件中配置一下信息

<beans Xmlns="http://www.springframework.org/schema/beans"
       Xmlns="http://www.w3.org/2001/XMLSchema-instance"
       Xmlns:context="http://www.springframework.org/schema/context"
       Xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context-2.5xsd">
</beans>

这个配置隐式注册了多个对注释进行解析处理的处理器:

AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor

PersistenceAnnotationBeanProcessor,RequiredAnnotationBeanPostProcessor

3.区别

在java代码中使用@Autowired或@Resource注解方式进行装配。这两个注解的区别是@Autowired默认按类型装配@Resource默认按名称进行装配,当找不到与名称匹配的bean才会按类型装配

@Autowired
private PersonDao personDao;//用于字段上
@Autowired
public void setOrderDao(OrderDao orderDao){
    this.orderDao = orderDao; //用于属性的setter方法上   
}

@Autowired注解是按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false;如果我们想使用名称装配,可以结合@Qualfier注解一起使用,如下:

@Autowired@Qualifier("personDao")
private PersonDao personDao;

@Resource注解和@Autowired一样,可以标注在字段或者属性的setter方法上,但它默认按名称装配。名称可以通过@Resource的name属性指定;如果没有指定name属性,当注解标注在字段上,即默认字段的名称作为bean名称寻找依赖对象;当注解标注在属性setter方法上,即默认取属性名作为bean名称寻找依赖对象

@Resource(name="personDaoBean")
private PersonDao personDao;

注:如果没有指定name属性,并且按照默认的名称仍找不到对象时,@Resource注解会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。

总结

以上就是本文关于通过@Resource注解实现属性装配代码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

Spring实例化bean的方式代码详解

Spring的实例工厂方法和静态工厂方法实例代码

Spring用代码来读取properties文件实例解析

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • MybatisPlus中插入数据后获取该对象主键值的实现

    MybatisPlus中插入数据后获取该对象主键值的实现

    这篇文章主要介绍了MybatisPlus中插入数据后获取该对象主键值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • java课程设计之坦克大战

    java课程设计之坦克大战

    这篇文章主要为大家详细介绍了java课程设计之坦克大战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • Jmeter多台机器并发请求实现压力性能测试

    Jmeter多台机器并发请求实现压力性能测试

    这篇文章主要介绍了Jmeter多台机器并发请求实现压力性能测试,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • java正则实现各种日期格式化

    java正则实现各种日期格式化

    本文给大家分享的是使用java结合正则表达式来实现各种日期的格式化功能,代码非常的简单,有需要的小伙伴可以参考下。
    2015-05-05
  • 关于JavaEE内部类的部分注意事项

    关于JavaEE内部类的部分注意事项

    这篇文章主要介绍了关于JavaEE内部类的部分注意事项,将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类,这是一种封装思想,那么使用内部类的时候要注意些什么呢,让我们一起来看看吧
    2023-03-03
  • Nacos心跳时间配置及服务快速上下线方式

    Nacos心跳时间配置及服务快速上下线方式

    这篇文章主要介绍了Nacos心跳时间配置及服务快速上下线方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 阅读EnumSet抽象类源码

    阅读EnumSet抽象类源码

    这篇文章主要介绍了阅读EnumSet抽象类源码,具有一定参考价值,需要的朋友可以了解下。
    2017-12-12
  • java中BigDecimal的使用踩坑记录

    java中BigDecimal的使用踩坑记录

    这篇文章主要为大家详细介绍了java中使用BigDecimal会踩坑的地方以及相关的解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • java 开发使用字符串和数字的性能分析

    java 开发使用字符串和数字的性能分析

    这篇文章主要介绍了java 开发使用字符串和数字的性能分析的相关资料,需要的朋友可以参考下
    2017-07-07
  • Spring类型转换 ConversionSerivce Convertor解析

    Spring类型转换 ConversionSerivce Convertor解析

    这篇文章主要介绍了Spring类型转换 ConversionSerivce Convertor的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11

最新评论