有没有办法在spring中使用依赖注入来注入特定接口的所有可用实现?
虽然我的目标是使用@Autowired:
public class Foo{
@Autowired
private IDataCollector[] collectors;
}
这是否支持,这是否需要黑客攻击,或者我最好使用另一个组件,其中IDataCollector的所有实现都注册它们并使用自动装配的访问器组件而不是数组注入?
我可以想到为什么默认情况下可能无法实现的原因可能是,它还会在不适当的情况下注入可能的模拟实现。虽然我仍然感兴趣,但这是否可行。 :)
答案 0 :(得分:4)
你可以注入一个List,Spring会为你转换它:
<util:list id="collectors">
<value>someone@something.com</value>
<value>someoneelse@something.com</value>
</util:list>
答案 1 :(得分:3)
您的示例应该正常工作,List<IDataCollector>
也应如此。你在问之前试一试,发现它不起作用了吗?
http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-autowired-annotation
也可以提供全部 来自的特定类型的豆类 ApplicationContext通过添加 对该字段或方法的注释 需要一个这种类型的数组。