Spring中的数组依赖注入?

问题描述 投票:2回答:2

有没有一种方法可以使用依赖注入在春季注入特定接口的所有可用实现?

这有点像as asked here for .NET

尽管我的目的是为此使用@Autowired:

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

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

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

java spring dependency-injection components autowired
2个回答
3
投票

您的示例应该可以正常工作,List<IDataCollector>也可以。在询问之前您是否尝试过,发现它不起作用?

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

也可以提供所有特定类型的咖啡豆通过添加ApplicationContext注释的字段或方法需要该类型的数组。


4
投票

您可以注入一个列表,Spring会为您转换它:

<util:list id="collectors">
  <value>[email protected]</value>
  <value>[email protected]</value>
</util:list>
© www.soinside.com 2019 - 2024. All rights reserved.