spring 框架的 @Autowired 和 @Resource 两种注解的区别
2016-04-16 00:04
381 查看
最开始做项目时,依赖注入用到的注解都是 J2EE 的 @Resource,那时还根本不了解 spring 有 @Autowired。心塞。
前两天想到估计有很多刚开始学习 java 的童鞋可能对这两个注解并没有注意区分,那我就在这总结一下吧。当然很多都是 copy 自网络。
1. 默认按类型装配。
2. 默认情况下必须要求对象存在,如果允许 Null 值,可是设置 requried 属性为 false 。如下:
3. 如果想改为按名称匹配,需要结合 @Qualifier 注解使用。如下:
@Resource
1. 默认按照名称装配,且默认按字段名查找。
2. 如指定 name 属性,则按照指定的 name 值查找。如下:
3. 在不指定 name 值的前提下,按名称搜不到匹配的 bean 时,会自动改为按类型匹配。
前两天想到估计有很多刚开始学习 java 的童鞋可能对这两个注解并没有注意区分,那我就在这总结一下吧。当然很多都是 copy 自网络。
相同点:
1. 都是用来装配 Bean,都可以写在字段上,或者写在 setter 方法上。不同点:
@Autowired1. 默认按类型装配。
2. 默认情况下必须要求对象存在,如果允许 Null 值,可是设置 requried 属性为 false 。如下:
@Autowired(required = false)
3. 如果想改为按名称匹配,需要结合 @Qualifier 注解使用。如下:
@Autowired @Qualifier("baseDao") private BaseDao baseDao;
@Resource
1. 默认按照名称装配,且默认按字段名查找。
2. 如指定 name 属性,则按照指定的 name 值查找。如下:
@Resource("dao") private BaseDao baseDao;
3. 在不指定 name 值的前提下,按名称搜不到匹配的 bean 时,会自动改为按类型匹配。
相关文章推荐
- Java date format时间格式化操作示例
- Struts2值栈和OGNL
- SeimiCrawler+SeimiAgent完美解决动态页面渲染Ajax抓取问题
- JAVA多线程深度解析
- Spring 传播行为(PROPAGATION)
- Java关键字this
- Java关键字static
- Java进阶学习1-多线程下载
- Java进阶学习1-多线程断点下载
- Java进阶学习2-多线程实现的3种方式
- Java进阶学习2-多线程之守护线程
- Java进阶学习2-多线程之加入线程
- Java进阶学习2-多线程之停止线程
- Java进阶学习2-多线程之礼让线程
- Java进阶学习2-线程的声明周期图
- swing jframe全屏显示无边框
- # 20145327 《Java程序设计》第七周学习总结
- java集合框架08——HashMap和源码分析
- Spring.NET
- Java IO流