@Autowired注解 @Resource注解 @Qualifier注解,你真的会用吗

   在大家学习spring中bean的注入的时候,相信大家对于这几个注解都不陌生,但是你真的了解他们吗?

首先简单区分下:
@Autowired : 通过类型注入(byType)
@Qualifier :通过名字注入 (byName)
@Resource :既可以通过类型也可以通过名字

其实在做bean操作的时候,@Autowired和@Resource并没有多大的区别,但是spring官方推荐使用@Autowired,为什么呢?因为@Autowired注解是spring带的,而@Res注解是引入javax包下面的
javax.annotation.Resource(懂的都懂)

通过类型注入和通过名字注入的区别
@Autowired注解如果找到多个bean这种情况,那么他可坑不知道找哪一个就会报错。
什么是多个bean呢:
简单来说(通与理解的)
一个接口里面有多个实现类,这时你要是通过@Autowired就会报错了。他找不到到底是哪一个
流程图如下:
@Autowired注解

这种多个bean你就要使用byName去注入,即在每个实现类给他一个初始化的名字比如:
@Service(name = “userService1”)
@Service(name = “userService2”)

如果这两个实现类实现的是同一个人类那么@Autowired注解显然就会报错,这时可以用@Qualifier注解即
@Qualifier(“userService2”)
这样就引入了第二个service

一般情况下
@Autowired和@Qualifier一起用,
@Autowired
@Qualifier(“userService2”)
private UserService userService;

@Resource单独用。
@Resource(name= “userService2”)
private UserService userService;

当存在一个bean的时候@Autowired单独使用

默认情况下@Resource注解,默认是通过byName去注入bean的

所以在这样的情况下做bean注入的时候
@Resource其实是=@Autowired+@Qualifier

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值