2017-10-21 24 views
1

JEEからSpringBootにコードを移行しています。私はjavax.enterprise.inject.InstanceクラスでJEEでクールな動的噴射を使用していました:Spring注入時のSpring起動時のjavax.enterprise.inject.Instanceと同等

だけで注釈を付ける:

@Inject 
private Instance<CCIntentHandler> allMycandidates; 

するallMycandidatesは、その後、私ができる私のクラスパスにCCIntentHandlerインターフェイスを継承するすべてのクラスで満たされるようになります次のように繰り返します:

Iterator<CCIntentHandler> iterator = allMycandidates.iterator() 

何も必要ありません。 Spring Bootでこれをどのように達成できますか?あなた@Autowire場合

おかげ

答えて

1

春はList<Foo>Fooのすべてのインスタンスを注入します。このコメントへの応答で

@Autowire 
private List<CCIntentHandler> allMycandidates; 

アップデート1::だから

@Inject 
private Instance<CCIntentHandler> allMycandidates; 

...の春同等...ある

ドゥCCIntentHandlerこのインタフェースを実装しているインタフェースやクラスには、任意のSpringアノテーションが必要ですか?次のように

春はCCIntentHandlerのすべてのインスタンスを認識しておく必要があり、これを達成することができます:

  • 注釈各クラスが@ComponentCCIntentHandlerを実装し、これらのクラスは
春ブーツによってスキャンされていることを確認します

または

  • これらのパブリックメソッドのそれぞれに@Beanと注釈を付けて、これらのパブリックメソッドを含むクラスに@Configurationと注釈が付けられていること、そしてこの設定クラスがSpring Bootによってスキャンされていることを確認してください。

Bean宣言と依存性注入の詳細はin the docsです。

+0

ありがとうございます! CCIntentHandlerインターフェイスまたはこのインターフェイスを実装するクラスには、任意のSpringアノテーションが必要ですか? – icordoba

+0

@cordoba最後のコメントに対処するための回答を更新しました – glytching

関連する問題