2

依存性注入を使用して、春に特定のインターフェイスの利用可能なすべての実装を注入する方法はありますか?

これは、ここで.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 に答える