Spring中 @Autowired注解与@Resource注解的区别
2016-07-05 00:20
841 查看
我们经常使用到@Autowired和@Resource进行装配,这两个注解的区别是什么呢。
相同点:
@Resource的作用相当于@Autowired,均可标注在字段或属性的setter方法上。
不同点:
(1)提供方:@Autowired是由org.springframework.beans.factory.annotation.Autowired提供,换句话说就是由Spring提供;
@Resource是由javax.annotation.Resource提供,即J2EE提供,需要 JDK1.6及以上。
(2)注入方式:@Autowired默认按类型装配;@Resource默认按名称装配,也提供按照类型装配;
(3)@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:
@Resource有两个中重要的属性:name和type。name属性指定 byName,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法 上,即默认取属性名作为bean名称寻找依赖对象。需要注意的是,@Resource如果没有指定name属性,并且按照默认的名称仍然找不到依赖对象 时, @Resource注解会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。
推荐使用@Resource注解在字段上,这样就不用写setter方法了.并且这个注解是属于J2EE的,减少了与Spring的耦合,这样代码看起就比较优雅 。
相同点:
@Resource的作用相当于@Autowired,均可标注在字段或属性的setter方法上。
不同点:
(1)提供方:@Autowired是由org.springframework.beans.factory.annotation.Autowired提供,换句话说就是由Spring提供;
@Resource是由javax.annotation.Resource提供,即J2EE提供,需要 JDK1.6及以上。
(2)注入方式:@Autowired默认按类型装配;@Resource默认按名称装配,也提供按照类型装配;
(3)@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:
@Autowired() @Qualifier("baseDao") private BaseDao baseDao;
@Resource有两个中重要的属性:name和type。name属性指定 byName,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法 上,即默认取属性名作为bean名称寻找依赖对象。需要注意的是,@Resource如果没有指定name属性,并且按照默认的名称仍然找不到依赖对象 时, @Resource注解会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。
@Resource(name="baseDao") private BaseDao baseDao;
推荐使用@Resource注解在字段上,这样就不用写setter方法了.并且这个注解是属于J2EE的,减少了与Spring的耦合,这样代码看起就比较优雅 。
相关文章推荐
- Struts2系列:(23) 国际化(一)介绍
- java中的this,super关键字
- java多线程下载
- 10008---Java并发编程:volatile关键字解析
- Java中2D图形常用方法
- Java之进程与线程的区别
- Spring4 Restful Demo
- 在Eclipse下手动搭建SSH框架,并使用Hibernate插件反向生成实体类和关系映射文件。
- Java中的HashMap和HashTable到底哪不同?
- Android eclipse runtime 异常binary xml file 如何解决
- java序列化流程
- Presto客户端跟服务端交互
- 实现自己的控制层do-c (仿Struts2和SpringMVC)(三)
- 实现自己的控制层do-c (仿Struts2和SpringMVC)(四)
- 实现自己的控制层do-c (仿Struts2和SpringMVC)(五)
- Java 解决采集UTF-8网页空格变成问号乱码
- JAVA 获取音频/视频长度
- java用户角色权限设计
- 观察者设计模式 Vs 事件委托(java)
- Java 中的"=="和equals()方法比较总结。