Spring @Primary注解
作者:互联网
Spring @Primary注解
当一个接口有多个实现类被Spring管理时,会提示required a single bean, but 2 were found并报错。
当存在一个接口有多个实现类被Spring管理的情况,可以使用下面三种方法解决:
1、解决办法1
在实现类上加上不同的实例名,并且在调用处,使用和实例名一致的变量名。
A实现类:
@Service("testServiceA")
B实现类:
@Service("testServiceB")
@Autowired
public TestService testServiceA;
此时会注入testServiceA
2、解决办法2
使用上面的方法虽然可以解决,但是一旦变量名称和实例名不一致,就会报错。如果在Service实现类上加上@Primary
注解就可以解决这个问题。
@Primary
@Service("testServiceA")
@Service("testServiceB")
@Autowired
public TestService testServiceB;
此时,由于加入了@Primary
注解,会注入testServiceA
3、解决办法3
如果一个类加入了@Primary
注解,但仍旧需要注入没有加入次注解的实现,可以使用@Qualifier
注解指定要注入的实例。
@Primary
@Service("testServiceA")
@Service("testServiceB")
@Autowired
@Qualifier("testServiceB")
public TestService testServiceB;
此时,由于指定了@Qualifier("testServiceB")
,会注入testServiceB
标签:Service,Spring,Primary,注解,testServiceB,testServiceA 来源: https://www.cnblogs.com/zhangruifeng/p/16085711.html