其他分享
首页 > 其他分享> > Spring @Primary注解

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