当一个接口有多个不同实现时,注入Spring的时候会产生org.springframework.beans.factory.NoUniqueBeanDefinitionException异常信息。
  解决方式有2种,使用@Primary 和 @Qualifier注解。

注解 区别
@Primary 优先注入该注解的标注的bean
@Qualifier 确定注入该注解标定的bean

1、@Qualifier

  该注解的意思是直接注入该注解标定的bean,而非选择。如:

public interface ITeacher {String getName();
}
@Component
public class MathTeacher implements ITeacher {public String getName() {return "Math";}
}
@Component
public class EnglishTeacher implements ITeacher {public String getName() {return "English";}
}

  如果这个时候使用@Autowired就会报错,需要指定注入具体对象:

public class ClassRoom {@Autowired@Qualifier("englishTeacher")public ITeacher teacher;
}

2、@Primary

  @Qualifier是在使用注入的时候,使用方明确指出使用哪个;@Primary更像是提供方告诉你优先使用哪个。举个例子,你实现排序接口的很多的实例,如冒泡排序,快排,选择排序等等。在使用者选择不明确的情况下,你希望他优先(默认)选择冒泡排序。这样你就在冒泡排序实现类上使用@Primary予以标识。

public interface ISort {String getName();
}
@Component
@Primary
public class MaopaoSort implements ISort {public String getName() {return "冒泡排序";}
}
@Component
public class XuanzeSort implements ISort {public String getName() {return "选择排序";}
}
public class MySort {@Autowiredpublic ISort sort;
}

@Primary 和 @Qualifier的区别相关推荐

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

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

  2. @Primary和@Qualifier 使用

    @Primary 当有两个带有注解的类,同时实现同一个接口的时候,spring 根据类型无法选择到底注入哪一个,这个时候,你就需要加上@Primary注解来作为唯一标识,可以优先选择哪一个具体的实现, ...

  3. @Primary和@Qualifier注解

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

  4. @Autowired @Resource @Qualifier的区别

    @Autowired @Resource @Qualifier的区别 实用理解:@Autowired @Resource 二选其一,看中哪个就用哪个. 简单理解: @Autowired 根据类型注入, ...

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

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

  6. primary key 和 unique区别

    primary key 和 unique区别 主要区别: pri:复合主键的时候,和唯一即可 nn+un:每一个元素都要唯一 unique 可空,可以在一个表里的一个或多个字段定义:primary k ...

  7. apring中@Primary和@Qualifier注解的区别

    首先说明一下两个注解的作用 @Primary:在众多相同的bean中,优先选择用@Primary注解的bean(该注解加在各个bean上) @Qualifier:在众多相同的bean中,@Qualif ...

  8. @Primary 和 @Qualifier

    问题 当一个接口有2个不同实现时,使用@Autowired注解时会报org.springframework.beans.factory.NoUniqueBeanDefinitionException异 ...

  9. @Primary和@Qualifier

    @Primary 和 @Qualifier_tom和cat的博客-CSDN博客_@primary 问题描述:就是一个接口KKService, 有两个实现类:@Service("kkServi ...

最新文章

  1. labview 串口通信开发基础详解
  2. windows 2008 enterprise tcpip.sys问题总结。
  3. 30秒就能学会一个Python小技巧?
  4. Spring的HelloWorld
  5. HttpURLConnection总结
  6. alert 标题_[SwiftUI 知识碎片] Button、Image 和 Alert
  7. 容器技术之快速了解K8S各抽象资源及组件架构
  8. redis-cli 常用命令
  9. Linux操作系统内核启动参数详细解析[转]
  10. 联想笔记本那些有手写功能_联想笔记本如何使用vista自带的手写输入法tablet pc...
  11. Java中反射性能测试
  12. 排序算法2:冒泡排序
  13. C语言各数据类型所占内存空间大小
  14. 计算机网络里面ap是什么,网络ap是什么意思
  15. RAKsmart美国云服务器配置升级教程
  16. 玩转软路由 篇二:软路由中Esxi 7.0 安装教程和避坑指南
  17. JavaScript事件——【小案例】小人快跑
  18. Vmware更新为16后,原本正常使用的虚拟机网络不通
  19. 英特尔夏乐蓓:物联网正成为现实
  20. 锐捷NBR路由器 EWEB网管系统 远程命令执行漏洞 + GetShell

热门文章

  1. android sqlite fts4,SQLite FTS3/FTS4与一些使用心得
  2. 在Debian上用FVWM做自己的桌面
  3. 【2022/02/02】thinkphp源码详细阅读(一)
  4. 生成pdf带跳转的书签
  5. mysql truncate操作可能导致 数据表不存在
  6. Linux--date命令
  7. 分布式系统之CAP和BASE理论
  8. Charles抓包工具安装教程
  9. 位置度最大实体计算方式
  10. HTML/HTML5