造轮子的一个小小的发现

当一个接口被两个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了,而且对于大多数开发者而言,只要理解使用默认的功能就足够了。

最新文章

  1. 阿里云直播 C# SDK 如何使用
  2. Linux 入门之网络配置
  3. 微信支付Native扫码支付模式二之CodeIgniter集成篇
  4. 监听报错 TNS-00525: Insufficient privilege for operation 11gR2 + 连接报错ORA-12537: TNS:connection closed
  5. python encode decode unicode区别及用法
  6. python3.4 安装ipython notebook
  7. HDU 4767 Bell(矩阵+中国剩余定理)
  8. Dictionary<实体,List<实体>>的比较
  9. 时间的函数,sleep,clock,gettickcount,QueryPerformanceCounter(转)
  10. pl/sql 关于变量定义的问题
  11. Ghost源代码
  12. ORM框架Hibernate (四) 一对一单向、双向关联映射
  13. Linux下采用VI编辑器删除复制或移动多行文本内容
  14. SSH(poderosa)を使って、さくらのMySQLサーバーに接続する方法
  15. Node_初步了解(2)
  16. Java环境下shiro的测试-认证与授权
  17. selenium 定位无标签的元素
  18. KMP、扩展KMP、Manacher习题
  19. [Noi2014]购票 BZOJ3672 点分治+斜率优化+CDQ分治
  20. MySQL5.7安装(RPM)笔记

热门文章

  1. 1076 Forwards on Weibo (30)(30 分)
  2. 1067 Bash 游戏v2
  3. 系列文章--突袭HTML5
  4. MySql 官方存储引擎
  5. bzoj1853幸运数字——容斥原理
  6. CentOS 6.6 搭建Zabbix 3.0.3 过程
  7. 开发商应用被App Store拒绝的79个原因
  8. openstack开发环境搭建
  9. 微信接口出现“调用支付jsapi缺少参数appid”
  10. php + mssql乱码