造*的一个小小的发现
当一个接口被两个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