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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步