Spring中的Autowired注解和Resource注解的区别

本文深入探讨了Spring框架中@Autowired和@Resource注解的使用方法及差异,包括它们的默认注入策略、重要属性、Bean查找规则等关键信息,帮助读者理解如何在Java应用中高效地进行依赖注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Autowired注解
注入策略:
为Spring框架提供的注解,
默认注入的策略为 按照类型(ByType)注入。
主要定义的操作对象:
bean对象的变量、构造器注入、set方法。
重要的属性:
Qualifier、required
Bean的查找规则:
a) 默认是要对象必须存在的,如果允许对象为null,则要设置required = false
b) 使用Autowired将Bean对象注入到容器中时,会先根据Bean类型进行查找,如果该类型有多个bean只,无法选择具体哪一个的情况,使用Qualifier配合使用。

2、Resource注解
注入策略:
javax提供的扩展包中的注解,
默认注入的策略为 按照名称(ByName)注入,
底层采用了反射机制。
主要定义的操作对象:
变量、set方法
重要的属性:
name(解析为Bean的名称)、
例如:@Resource(name = “bed”)
type(解析为Bean的Java类型)
@Resource(type = “java.lang.String.class”)
Bean的查找规则:
a) 同时指定了name和type,则在Spring上下文中找到唯一匹配的Bean,找不到则抛出异常。
b) 指定了name,则在Spring上下文中找到了名称(使用注解注册的Bean的name一般为类名称的驼峰写法)匹配的Bean进行装配,找不到或者找到多个则抛出异常。
c) 指定了type,在Spring上下文中找到匹配的唯一Bean进行装配,找不到或者找到多个则抛出异常。
d) 没有指定name或者type,按照byName进行查找装配,如果没有匹配,则回退到一个原始类型(String hello变量的原始类型就是java.lang.String)进行匹配(根据type匹配原始类型)。找不到或者找到多个则抛出异常。

总结:
使用autowired默认使用type进行Bean属性注入,如果遇到bean有多个值,使用注解Qualifier进行指定。
使用Resource默认使用name进行Bean属性注入,如果没有找到,则使用type进行属性注入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值