关于@Autowired和@Resource注解的区别

最近在看面试题和复习框架,在看到springboot的时候,想查一下@Autowired和@Resource注解的区别,结果查出来各式各样的,最后自己基于Springboot 2.4.3去实践了一下。
先说结论:
@Autowired只能通过type去容器查找
而@Resource支持用name,type两种方式查找,默认使用name


下面是实践:

如果在容器里出现多个相同type的对象,也会抛出异常,expected single matching bean but found x
在这里插入图片描述
@Autowired默认根据type去容器查找,如果容器内没有该类型对象,会抛异常。如果容器内有该对象,则注入成功
在这里插入图片描述

说明@Autowired注解只能通过类型注入,跟name并无关系,当容器中出现多个相同类型对象时,会抛出异常,此时需要结合@Qualifier去找具体名称的容器对象才行


而@Resource默认根据name去容器查找,如果根据name查找不到,会通过type进行查找,但是如果查出有多个相同类型对象时,此时会抛出异常,expected single matching bean but found x
在这里插入图片描述
在这里插入图片描述

通过更改变量类型和名字,会发现都能注入成功
在这里插入图片描述

说明@Resource支持用name和type两种方式,默认通过name进行查找,通过name查不到时,会通过type进行查找

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值