@Autowired 和 @Resource的区别

1.@Autowired是Spring的,@Resource是javax包下的。

2.@Autowired默认按类型匹配,@Resource默认按名称匹配

3.@Autowired默认按类型匹配,

  • spring容器中没有该类型的bean,报NoSuchBeanDefinitionException
  • 有一个,注入找到的bean
  • spring容器中有多个该类型的bean。若@Autowired作用在字段上,用字段名去匹配,若匹配成功注入,否则报NoUniqueBeanDefinitionException。若@Autowired作用在setter方法或构造器方法上,用形参名去匹配,若匹配成功注入,否则报NoUniqueBeanDefinitionException。

4.@Autowired和@Qualifier一同使用,@Qualifier指定bean的名称,当类型和名称都匹配时注入,否则报NoSuchBeanDefinitionException。@Autowired作用在setter或构造器方法时,@Qualifier需作用在方法的形参上。

5.@Resource默认按名称匹配,若作用在字段上用字段名,若作用在方法上用方法的形参名,若用名称匹配成功,注入。若用名称匹配失败,用类型匹配,有三种情况,没有、匹配到一个或多个。按类型没有匹配到,报NoSuchBeanDefinitionException;若匹配到一个,注入;若匹配到多个,报NoUniqueBeanDefinitionException。

6.@Resource

  • 指定name,按名称匹配。若用名称匹配成功,注入。若用名称匹配失败,报NoSuchBeanDefinitionException。
  • 指定type,按类型匹配。有三种情况,没有、匹配到一个或多个。按类型没有匹配到,报NoSuchBeanDefinitionException;若匹配到一个,注入;若匹配到多个,报NoUniqueBeanDefinitionException。
  • 指定name和type,名称和类型同时匹配,若匹配成功,注入,否则报NoSuchBeanDefinitionException。
    (使用Spring容器的情况下,才报NoSuchBeanDefinitionException、NoUniqueBeanDefinitionException)
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值