自动装配组件@Resource和@Autowired区别
下文笔者讲述@Resource和@Autowired注解的区别说明,如下所示
@Resource和@Autowired区别
@Resource:
先按照名称进行注入
如果按照名称查找不到,再根据类型进行查找
该注解属于JDK中的注解,它在项目中使用频率比较高。
@Autowired:
先按照类型(byType)自动装配
如果存在多个相同类型Bean
再按照名称(byName)自动装配
默认情况下要求依赖对象必须存在
如果要允许null值,可以设置它的required属性为false
required属性默认值为true
@Resource和@Autowired相同点及区别
@Resource和@Autowired相同点
@Resource的作用相当于@Autowired
均可标注在字段或属性的setter方法上
@Resource和@Autowired不同点:
1.提供方:
@Autowired是由Spring提供
即由org.springframework.beans.factory.annotation.Autowired提供
@Resource是由JDK提供
即由javax.annotation.Resource提供
来自于 JSR-250,需要JDK 6及以上版本
2.注入方式:
@Autowired只按照byType 注入
可以借助@Qualifier注解来指明使用哪一个实现类
@Resource默认按byName自动注入,也提供按照byType 注入
3.注解属性:
@Autowired注解只支持设置一个required属性
而@Resource注解支持七种属性
@Autowired 按类型装配依赖对象
默认情况下它要求依赖对象必须存在
如果允许null值,可以设置它required属性为false
如果我们想使用按名称装配,可以结合@Qualifier注解一起使用
4.依赖注入的支持不同:
@Autowired 可以写在构造器上,
用于注入bean,@Resource不可以
@Autowired 支持三种常见依赖注入方式——属性注入、构造方法注入和 Setter 注入
而@Resource只支持属性注入和Setter注入
5.@Resource注解不支持spring的@Primary注解优先注入
但是@Autowired支持
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


