首先说明一下两个注解的作用

@Primary:在众多相同的bean中,优先选择用@Primary注解的bean(该注解加在各个bean上)

@Qualifier:在众多相同的bean中,@Qualifier指定需要注入的bean(该注解跟随在@Autowired后)

下面一个小例子:

1.ServiceTest接口

public interface ServiceTest {void doSomething();
}

2.两个实现类

@Service("service1")
public class Service1 implements ServiceTest{@Overridepublic void doSomething() {System.out.println("this is service1");}}
@Service("service2")
public class Service2 implements ServiceTest{@Overridepublic void doSomething() {System.out.println("this is service2");}}

3  测试一

@Autowired
private ServiceTest serviceTest;@RequestMapping("showServiceTest")
public void showServiceTest(HttpServletRequest request, HttpServletResponse response) {this.serviceTest.doSomething();
}

启动报错
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'analysisTest': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.grac.web.controller.analysis.ServiceTest com.grac.web.controller.analysis.AnalysisTest.serviceTest; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.grac.web.controller.analysis.ServiceTest] is defined: expected single matching bean but found 2: service1,service2

4  测试二

 @Autowired@Qualifier("service2")private ServiceTest serviceTest;@RequestMapping("showServiceTest")public void showServiceTest(HttpServletRequest request, HttpServletResponse response) {this.serviceTest.doSomething();}

控制台输出

this is service2

5  测试三
在service1上加入@Primary注解

@Service("service1")
@Primary
public class Service1 implements ServiceTest{@Overridepublic void doSomething() {System.out.println("this is service1");}}
 @Autowiredprivate ServiceTest serviceTest;@RequestMapping("showServiceTest")public void showServiceTest(HttpServletRequest request, HttpServletResponse response) {this.serviceTest.doSomething();}

控制台输出

this is service1

apring中@Primary和@Qualifier注解的区别相关推荐

  1. @Primary和@Qualifier注解

    @Primary和@Qualifier注解,都是处理@Autowired注入时,发现多个相同类型的冲突时,进行解决. 实际项目中,@Autowired,默认是byType注入,当发现多个实现类的时候, ...

  2. 解决多类型冲突的三种方式(@Primary、@Qualifier注解)

    目录标题 知识预热 @Autowired(先byType后byName) @Qualifier(byName) @Primary(byType) @Primary和@Qualifier注解的作用 注入 ...

  3. spring的@primary和@qualifier注解解决一个接口多个实现的注入问题

    spring的@primary和@qualifier注解解决一个接口多个实现的注入问题 参考文章: (1)spring的@primary和@qualifier注解解决一个接口多个实现的注入问题 (2) ...

  4. Springboot中@autowired和@resource注解的区别

    @Autowired @Autowired是Spring提供的,默认按照byType 注入,也就是按bean的类型来传入.如果需要指定名字,那么需要使@Qualifier("这是bean的名 ...

  5. @Primary 和 @Qualifier的区别

      当一个接口有多个不同实现时,注入Spring的时候会产生org.springframework.beans.factory.NoUniqueBeanDefinitionException异常信息. ...

  6. Spring中@Autowired、@Qualifier、@Resource的区别

    转自: Spring中@Autowired.@Qualifier.@Resource的区别_老周聊架构的博客-CSDN博客_qualifier和resource区别1.@Autowired@Autow ...

  7. Table中Family和Qualifier的关系与区别(转载)

    Table中Family和Qualifier的关系与区别 就像用MySQL一样,我们要做的是表设计,MySQL中的表,行,列的在HBase已经有所区别了,在HBase中主要是Table和Family和 ...

  8. spring中@Qualifier注解的使用

    <该注解可以使用在类上.属性上.参数上.方法上> 1.  当使用在类上的时候,如下代码,@Qualifier注解里面填写的值就是当前类注入到IOC容器的bean的唯一标识(id),再使用到 ...

  9. Spring中 @Autowired注解与@Resource注解的区别

    相同点: @Resource的作用相当于@Autowired,均可标注在字段或属性的setter方法上. 不同点: (1)提供方:@Autowired是由org.springframework.bea ...

最新文章

  1. 云上护航服务—保障云上的尖峰时刻
  2. 前序,中序,后序遍历
  3. 欠薪解决新途径:劳动者可向法院申请支付令。(拖欠工资就是违法)
  4. java 数据类型model_如何在角度2中使用类数据类型的ngModel?
  5. 计算机网络拓跋结构,实战 | 服务端开发与计算机网络结合的完美案例
  6. 【网络基础】《TCP/IP详解》学习笔记5
  7. jQuery基础学习笔记(下)
  8. 诗与远方:无题(八十)- 吸烟而作
  9. 运维工具 Ansible 快速入门教程
  10. 安装.Net Framework提示:无法建立到信任根颁发机构的证书链
  11. leetcode 868. Binary Gap
  12. 安装 | MATLAB2020a (64位) 安装教程及安装包下载链接
  13. 带省略号的比喻句_标点符号往往能引发人们的联想,例如:“省略号像一条漫长的人生道路,等着你去书写它留下的空白。”请以一种标点符号(省略号除外)为描述对象,写一个比喻句,形象地阐发某种生活道理。...
  14. c++ 函数之间 传递向量_将向量传递给C ++中的函数
  15. SSH-keygen用法
  16. python 东方财富接口_Python从东方财富网站获取数据,python,的
  17. mdin偏移_dif_input.c 源代码在线查看 - C8051F系列单片机开发与C语言编程 非常好的东西 资源下载 虫虫电子下载站...
  18. IC/FPGA一文练完
  19. c语言建立线性表输入,c语言 建立线性表 链式
  20. django-oscar学习笔记(一)

热门文章

  1. python用什么编译器
  2. 租用和购买服务器的区别
  3. 【SQL】Oracle SQL monitor
  4. 易基因|m6A RNA甲基化研究的数据挖掘思路:干货系列
  5. SOLIDWORKS提升 SAE赛车队成绩
  6. kubeedge系列之Beehive(二)
  7. clickhouse之分布式(distribute)
  8. 关于JavaScript的箭头函数
  9. 品味人生20140930-优雅
  10. 游戏感:虚拟感觉的游戏设计师指南——译序和引言