Java Spring autowire接口的多重实现 接口A{ 使一些无效(); } @组成部分 类B实现了一个{ @凌驾 一些(){ } } @组成部分 类C实现了一个{ @凌驾 一些(){ } } D类{ @自动连线 列出一些;//它会同时包含这两个实例吗 }

Java Spring autowire接口的多重实现 接口A{ 使一些无效(); } @组成部分 类B实现了一个{ @凌驾 一些(){ } } @组成部分 类C实现了一个{ @凌驾 一些(){ } } D类{ @自动连线 列出一些;//它会同时包含这两个实例吗 },java,spring,annotations,Java,Spring,Annotations,我正在从事一个项目,其中我们有多个类实现同一个接口。 如何使类D中的列表同时包含类B和类C的bean?实际上,您将得到一个解决bean冲突的异常 有多种解决方案: 使用@Primary注释使其中一个bean成为可选的 @组件 @初级的 类B实现了一个{ @凌驾 一些(){ } } @组成部分 类C实现了一个{ @凌驾 一些(){ } } D类{ @自动连线 列出一些;//B将被注入,因为它是主 } 或者使用@限定符或@资源注释。 情景 @组件(“beanB”) 类B实现了一个{ @凌驾 一些(

我正在从事一个项目,其中我们有多个类实现同一个接口。
如何使类D中的列表同时包含类B和类C的bean?

实际上,您将得到一个解决bean冲突的异常

有多种解决方案:

  • 使用@Primary注释使其中一个bean成为可选的
  • @组件
    @初级的
    类B实现了一个{
    @凌驾
    一些(){
    }
    }
    @组成部分
    类C实现了一个{
    @凌驾
    一些(){
    }
    }
    D类{
    @自动连线
    列出一些;//B将被注入,因为它是主
    }
    
  • 或者使用@限定符@资源注释。 情景
  • @组件(“beanB”)
    类B实现了一个{
    @凌驾
    一些(){
    }
    }
    @组件(“beanC”)
    类C实现了一个{
    @凌驾
    一些(){
    }
    }
    D类{
    @自动连线
    @限定词(“beanB”)
    列出一些;//B将被注入,因为@Qualifier
    }
    
    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
    }