春天的数组依赖注入?

时间:2009-11-17 09:25:43

标签: java spring dependency-injection components autowired

有没有办法在spring中使用依赖注入来注入特定接口的所有可用实现?

这有点as asked here for .NET

虽然我的目标是使用@Autowired:

public class Foo{
  @Autowired
  private IDataCollector[] collectors;
}

这是否支持,这是否需要黑客攻击,或者我最好使用另一个组件,其中IDataCollector的所有实现都注册它们并使用自动装配的访问器组件而不是数组注入?

我可以想到为什么默认情况下可能无法实现的原因可能是,它还会在不适当的情况下注入可能的模拟实现。虽然我仍然感兴趣,但这是否可行。 :)

2 个答案:

答案 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通过添加   对该字段或方法的注释   需要一个这种类型的数组。