Spring:@Autowired和@Resouce的区别?

@Autowired和@Resouce的区别?

  • @Autowired 是Spring提供的,@Resource 是JDK提供的。
  • @Autowired默认按type装配,@Resource默认是按name装配。
  • @Autowired只包含一个参数:required,如果允许为null值,可以设置为false。而@Resource包含七个参数,其中最重要的两个参数是:name 和 type。
  • @Autowired如果要使用byName,需要使用@Qualifier一起配合。而@Resource如果指定了name,则用byName自动装配,如果指定了type,则用byType自动装配。
  • @Autowired能够用在:构造器、方法、参数、成员变量和注解上,而@Resource能用在:类、成员变量和方法上。

装配机制不同:

@Autowired:

  • 默认按照类型寻找唯一bean,找不到,则抛出异常
  • 找到多个,看是否配合了@Qualifier,有则根据参数名,寻找唯一Bean,找不到则抛出异常
  • 没有使用@Qualifier,则根据属性名寻找唯一Bean,找不到抛出异常

@Resouce:

  • 若指定type和name,则在容器中寻找唯一Bean,找不到抛出异常
  • 若指定了type,则在容器中寻找唯一Bean,找不到或找到多个抛出异常
  • 若指定了name,则根据name寻找唯一Bean,找不到抛出异常
  • 如果既没指定name,也没指定type,则自动按照byName方式进行装配。找不到,则回退为按照类型进行匹配,如果匹配则自动装配。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值