两个相同的类型同时使用@Autowired注入

首先要清楚@Autowired是默认按照类型注入,如果同一个类中要注入两个相同类型的实现类会有冲突。

解决冲突有两个方案

1:在声明类的地方使用@Qualifier   

   @Qualifier("test")
   @Autowired
   private Test test;

   @Qualifier("test1")
   @Autowired
   private Test test1;

2.在想要优先使用的实现类的上面加@Primary

这种方案不建议使用,有局限性,如果有两个不同的地方都需要注入两个相同类型的实现类,通过上面例子第一个地方想要使用test,第二个地方想要使用test1,还是需要借助@Qualifier 

@Primary
public class Test implements Itest {

}

   @Autowired
   private Test test;

   @Autowired
   private Test test1;

这样就优先使用有@Primary注入


版权声明:本文为weixin_55630985原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。