我正在为给定的类使用基于注释的连接(即@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
有没有办法让这项工作让一个类型的所有依赖项在一个集合中连接在一起并在必要时注入,或者我应该在XML中定义一个<list>
还是什么?
答案 0 :(得分:8)
是,
@Inject
private List<Configurer> configurers;
有效,您将获得实现该接口的所有bean的列表。 (多种变体 - @Inject
或@Autowired
,字段,setter或构造函数注入 - 所有工作)
答案 1 :(得分:2)
这应该有效:
@Configurable(autowire=Autowire.BY_TYPE)
public class Target {
@Autowired
public void setConfigurers(List<Configurer> configurers) { ... }
}
section 3.9.2 of the Spring manual:
中对此进行了描述还可以通过将注释添加到期望该类型数组的字段或方法来提供ApplicationContext中特定类型的所有bean [...]同样适用于类型化集合。