2

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

这与此处要求的 .NET相同。

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

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

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

我能想到为什么默认情况下可能无法实现的一个原因可能是,它还会在不合适的地方注入可能的模拟实现。尽管我仍然对这是否可能感兴趣。:)

4

2 回答 2

4

你可以注入一个 List,Spring 会为你转换它:

<util:list id="collectors">
  <value>someone@something.com</value>
  <value>someoneelse@something.com</value>
</util:list>
于 2009-11-17T11:16:45.630 回答
3

您的示例应该可以正常工作,List<IDataCollector>. 问之前有没有试过,发现不行?

https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-autowired-annotation

还可以通过将注释添加到需要该类型数组的字段或方法来从 ApplicationContext 提供特定类型的所有 bean。

于 2009-11-17T09:39:45.670 回答