spring中少用的注解@primary解析
2024-08-27 10:47:21
这次看下spring中少见的注解@primary注解,例子
- @Component
- public class MetalSinger implements Singer{
- @Override
- public String sing(String lyrics) {
- return "I am singing with DIO voice: "+lyrics;
- }
- }
- public class OperaSinger implements Singer {
- @Override
- public String sing(String lyrics) {
- return "I am singing in Bocelli voice: "+lyrics;
- }
- }
这两个类都实现了singer接口
- public interface Singer {
- String sing(String lyrics);
- }
那么来个注入的:
- @Component
- public class SingerService {
- private static final Logger logger = LoggerFactory.getLogger(SingerService.class);
- @Autowired
- private Singer singer;
- public String sing(){
- return singer.sing("song lyrics");
- }
- }
那么最后输出应该是:I am singing with DIO voice: song lyrics.
原因是只有MetalSinger使用了注解@component,那么autowird会只寻找这个标记的
进行注入:
如果也在OperaSinger 中使用了注解,则spring会报异常,不知道到底应该用
哪个:
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [main.service.Singer] is defined: expected single matching bean but found 2: metalSinger,operaSinger
以上报错因为根据bean的值找到对应两个类导致冲突; 如果某个@component("singer") ,spring就能默认找到bean名称,而确定注入哪一个实现类
而如果要让spring知道必须注入的是OperaSinger ,则可以用@primary注解告诉
spring:
- @Primary
- @Component
- public class OperaSinger implements Singer{
- @Override
- public String sing(String lyrics) {
- return "I am singing in Bocelli voice: "+lyrics;
- }
- }
最新文章
- 关于linux服务器上搭建ftp服务的流程
- error C2678
- ASP.NET Misconfiguration: Excessive Session Timeout
- python 环境安装
- python import eventlet包时提示ImportError: cannot import name eventlet
- repo: 创建local manifest以及如何添加app到CM/Android build系统中
- 关于javascript里面仿python切片操作数组的使用方法
- 分布式内存对象缓存系统Memcached-Linux下使用
- SDUT 3258 Square Number 简单数学
- c++ - fcgio.cpp:50: error: 'EOF' was not declared in this scope - Stack Overflow
- spring mvc 参数传递的三种方式
- mac版mysql配置
- 字节输入流:io包中的InputStream为所有字节输入流的父类。
- 易捷支付完整业务流程的lr脚本编写
- MySQL命令:约束
- 自建yum源解决Ceph搭建过程中从官网取包慢的问题
- Fedora Redhat Centos 有什么区别和关系?
- .NET Core改造工程直播
- iOS- Swift和Object-C的混合编程
- oracle 创建视图、修改视图、删除视图、利用视图操作基本表
热门文章
- 正整数序列 Help the needed for Dexter ,UVa 11384
- 记录一次kafka解决相同userId顺序消费的问题
- Integer源码解析
- Linux修改主机名方法
- 在论坛中出现的比较难的sql问题:34(递归 获取连续值问题)
- ASP.NET Core 2.1 中的 HttpClientFactory (Part 1) HttpClientFactory介绍
- openssl 证书cert与key合并pfx
- md5 helper
- jQuery遍历(3)
- 【实战】Apache shiro<;=1.2.4 getshell