9

我正在@Configurable(autowire=Autowire.BY_TYPE)为给定的类使用基于注释的连接(即),并且我想将给定类型的所有 bean 作为列表连接到其中:

应用上下文:

<beans>
    <bean class="com.my.class.FirstConfigurer"/>
    <bean class="com.my.class.SecondConfigurer"/>
</beans>

自动装配到的类:

@Configurable(autowire=Autowire.BY_TYPE) public class Target {
    ...
    public void setConfigurers(List<Configurer> configurers) { ... }
}

所有依赖项都实现了一个通用接口,称为Configurer

有没有办法使这项工作将一个类型的所有依赖项连接到一个集合中并在必要时注入,或者我应该<list>在 XML 中定义一个或其他什么?

4

2 回答 2

9

是的,

@Inject
private List<Configurer> configurers;

工作,你会得到一个实现接口的所有bean的列表。(多种变体 -@Inject@Autowired,字段,setter 或构造函数注入 - 所有工作)

于 2011-08-16T18:47:21.687 回答
2

这应该有效:

@Configurable(autowire=Autowire.BY_TYPE) 
public class Target {

    @Autowired
    public void setConfigurers(List<Configurer> configurers) { ... }

}

在 Spring 手册的第 3.9.2 节中有描述:

也可以通过将注释添加到需要该类型数组的字段或方法来从 ApplicationContext 提供特定类型的所有 bean [...] 这同样适用于类型化集合。

于 2011-08-16T18:47:01.907 回答