@Qualifier详细的说明和代码的演示

本文介绍了Spring框架中@Qualifier注解的作用,用于解决当@Autowired遇到多个相同类型的Bean时的注入冲突问题。通过实例展示了如何配合@Service注解,明确指定需要注入的实现类,避免NoUniqueBeanDefinitionException异常。
摘要由CSDN通过智能技术生成

提示:主要讲@Qualifier这个注解


一、@Qualifier是什么意思?

修饰语自我理解就是对@Autowired的补充,为什么我认为是补充呢?因为大家都知道是跟着@Autowired这个注解的,所以为了方便理解,我就认为是它的补充,基调先定在这里,然后我们再看看是一个什么样的补充.

二、具体说明

1.@Autowired是从Spring容器里面注入资源,但如果是一个接口,而且接口里面有两个实现类,如果我们需要使用该接口的方法,系统就不会识别我们到底用哪个实现类去实现

代码如下(示例):

    @Autowired
//    @Qualifier("PersonSeriverImpl2")
    private PersonSeriver personSeriver;
    public void eats() {
     personSeriver.eat();
    }

注意下@Qualifier(“PersonSeriverImpl2”)
这个我是注释了的
然而我的PersonSeriver有两个实现类,然后我现在运行程序就会报下面错
Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ‘com.itheima.seriver.PersonSeriver’ available: expected single matching bean but found 2: personSeriverImpl,personSeriverImpl2
翻译大概意思是:
由以下原因引起:org.springframework.beans.factory.NoUniqueBeanDefinitionException:没有类型为’com.itheima.seriver.PersonSeriver’的合格Bean:预期有单个匹配的Bean,但找到了2:personSeriverImpl,personSeriverImpl2
就是说,现在注入了两个资源,到底用哪个资源去实现它?然后就报错了,这个时候就需要我们的@Qualifier去解决问题了

  1. 先去你的实现类上面加上名字
  2. @Service(“PersonSeriverImpl2”)
  3. 把刚刚看到的注释放开@Qualifier(“PersonSeriverImpl2”),就是你方法所需要调用到的接口方法上面
    好了,我们再去运行我们的程序就OK了

总结

这里对@Qualifier注解进行一句话总结:
在Controller中需要注入service那么我的这个server有两个实现类如何区分开这两个impl呢,我们就需要运用到@Qualifier这个注解来了,这个注解可以给出解决这个冲突的方法.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值