Spring自动连接多个Interface实现

时间:2017-10-04 15:10:08

标签: java spring annotations

interface A{
 void some();
}

@Component
class B implements A{
 @override
 some(){
 }
}

@Component
class C implements A{
@override
 some(){
 }
}

Class D {
@Autowired
List<A> somes;//will it have the instances of both
}

我正在开发一个项目,我们有多个类实现相同的接口。 如何让D类中的列表包含B类和C类的bean?

1 个答案:

答案 0 :(得分:6)

实际上你会得到一个解决bean冲突异常

有各种解决方案:

  1. 使用 @Primary 注释使其中一个bean可选。
  2. SM_CYCURSOR
    1. 或使用 @Qualifier @Resource 注释。 场景。
    2. @Component
      @Primary
      class B implements A{
      
          @override
          some(){
          }
      
      }
      
      @Component
      class C implements A{
      
          @override
          some(){
          }
      
      }
      
      Class D {
      
          @Autowired
          List<A> somes;//B will be injected because it primary
      
      }