@Resource与@Autowired 比较

相同点

注解到字段上或者方法上来实现自动装配

不同点

1、@Autowired是由spring提供的,@Resource是java语言提供的,使用该注解能实现对spring的解耦(不过现在都是spring的天下,意义不大)

2、查找bean的方式不同

@Autowired:首先通过类型来查找bean,如果自找到一个,则直接注入,如果没有找到,则抛出异常,如果找到多个bean也会抛出异常,解决方法一:可以在配置bean的时候加上@Primary注解,来提高优先级,这样就不会报错,解决方法二:会默认使用字段名来匹配,如果没有匹配上,抛出异常。如果需要直接通过bean的id来查找,可以配合@Qualifier来使用,没有找到抛出异常。

PS:这里重点需要指出,使用@Autowired 是有优先级的,@Qualifier > 按类型找(如果找到多个继续使用之后的策略) > @Primary > 按名字找

@Resource: 如果注解中设置了name属性,直接通过id去查找,如果没有,抛出异常;如果注解中没有设置name属性,默认先通过字段名(或参数名)去查找,没有找到,再通过类型去查找,如果查找到0个或多个,抛出异常,注意:这里不支持使用@Primary来解决一个类型查找到多个bean的情况。

3、@Autowired通过设置required=false,在没有找到bean的情况下,不会抛出异常

综上,@Autowired功能更多,推荐使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值