spring @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