Java 中:@Autowired 和 @Resource

@Autowired和@Resource都是Spring中的注解,用于bean的自动注入。在接口有单一实现时,它们效果相似,但有不同之处。@Resource是JDK原生的,基于名称(byName)或类型(byType)自动装配;@Autowired默认按类型(byType)装配,需配合@Qualifier进行名称匹配。两者都可写于字段或setter,但推荐使用setter以保持面向对象设计。
摘要由CSDN通过智能技术生成

@Autowired 和 @Resource

作用:

  • @Resource和@Autowired都是做bean的注入时使用
  • 在接口仅有单一实现类时,两个注解的修饰效果相同,可以互相替换,不影响使用
  • 两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。
  • 最好是将@Resource放在setter方法上,因为这样更符合面向对象的思想,通过set、get去操作属性,而不是直接去操作属性。

区别

  • @Resource是JDK原生的注解,@Autowired是Spring2.5 引入的注解
  • @Resource有两个属性name和type。Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。
  • @Autowired只根据type进行注入,不会去匹配name。如果涉及到type无法辨别注入对象时,那需要依赖@Qualifier或@Primary注解一起来修饰。
  • @Autowired如果要使用byName,需要使用@Qualifier一起配合。而@Resource如果指定了name,则用byName自动装配,如果指定了type,则用byType自动装配。

未完待续…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值