java面试 @resource和@autowired

本文深入对比了@Autowired和@Resource两个注解在Java Spring框架中的使用差异。详细解释了它们的装配方式、依赖查找策略及如何解决多实现类时的注入问题。通过具体示例,帮助读者理解何时使用哪个注解更为合适。
摘要由CSDN通过智能技术生成

相同点

  • 都是做bean的注入时使用
  • 两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。

装配类型不同

  • @Autowired注解是按照类型(byType)装配依赖对象,属于Spring
    • 依赖对象必须存在,如果要允许null值,可以设置它的required属性required=false
    • 也可以使用名称装配,配合@Qualifier注解
  • @Resource默认按照名称(byName)自动注入,属于JDK
    • @Resource有两个重要的属性:name和type,而Spring将 @Resource 注解的name属性解析为bean的名字,而type属性则解析为bean的类型。
    • 如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象

差别举例

有一个类,俩个实现类的情况注入bean

// @Autowired不知道注入哪一个实现类,通过@Qualifier("xxx"),xxx为实现类的类名小写
@Autowired
@Qualifier("userDao")
private UserDao userDao; 

// @Resource有name属性,可以区分
@Resource(name = "userDao")
private UserDao userDao; 

参考
java面试专题之@Autowired和@Resource的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值