@Primary 使用
Posted lgp20151222
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@Primary 使用相关的知识,希望对你有一定的参考价值。
造轮子的一个小小的发现
当一个接口被两个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了,而且对于大多数开发者而言,只要理解使用默认的功能就足够了。
以上是关于@Primary 使用的主要内容,如果未能解决你的问题,请参考以下文章
.btn btn-primary * 可见性:隐藏; 不工作[重复]
java.sql.SQLException:目标:commerce.0.primary:vttablet:rpc 错误:代码 = InvalidArgument desc = 未知系统变量 'quer
spring in action 学习笔记八:用@Primary 或者@Qualifier消除@Autowired引起的歧义现象