@Primary 使用
2024-08-30 02:18:41
造轮子的一个小小的发现
当一个接口被两个service实现时,controller调用接口实现功能,会报错,提示开发者指定service,官方是建议你使用@Qualifier来区分的,但是,总有另一种方法实现的。
场景
public interface Hi{ String hi(); } @Service
public class Hi1 implements Hi{
@Override
public String hi() {
return "hi1";
}
} @Service
public class Hi2 implements Hi{
@Override
public String hi() {
return "hi2";
}
}
@Controller
public class SingerService {
@Autowired
private Hi hi; public String sing(){
return hi.hi();
}
}
此时没指定具体的接口实现类,spring会报错,但是只要将Hi2改成
@Service
@Primary
public class Hi2 implements Hi{
@Override
public String hi() {
return "hi2";
}
}
命令行就会输出
hi2
@Primary就是默认的意思,而他的使用情况当然不是用于service层了,而是在造轮子的时候,往往一个基本接口类有多次实现,我们只要给其中一个实现加上@Primary,那么在使用这个接口类的时候就不用每次都@Qualifier了,而且对于大多数开发者而言,只要理解使用默认的功能就足够了。
最新文章
- 阿里云直播 C# SDK 如何使用
- Linux 入门之网络配置
- 微信支付Native扫码支付模式二之CodeIgniter集成篇
- 监听报错 TNS-00525: Insufficient privilege for operation 11gR2 + 连接报错ORA-12537: TNS:connection closed
- python encode decode unicode区别及用法
- python3.4 安装ipython notebook
- HDU 4767 Bell(矩阵+中国剩余定理)
- Dictionary<;实体,List<;实体>;>;的比较
- 时间的函数,sleep,clock,gettickcount,QueryPerformanceCounter(转)
- pl/sql 关于变量定义的问题
- Ghost源代码
- ORM框架Hibernate (四) 一对一单向、双向关联映射
- Linux下采用VI编辑器删除复制或移动多行文本内容
- SSH(poderosa)を使って、さくらのMySQLサーバーに接続する方法
- Node_初步了解(2)
- Java环境下shiro的测试-认证与授权
- selenium 定位无标签的元素
- KMP、扩展KMP、Manacher习题
- [Noi2014]购票 BZOJ3672 点分治+斜率优化+CDQ分治
- MySQL5.7安装(RPM)笔记