2

この種の質問が定期的に戻ってくることは知っていますが、Bean を手動で (new Xxxx() を使用して) インスタンス化し、インジェクションを実行する方法があるのだろうかと思います。たぶん BeanManager を使用していますが、方法がわかりません。

それができないのなら、なぜこれをしなかったのだろうか。概念的には、これを不可能にする正当な理由が見つかりません。

ご説明ありがとうございます。

PS : 私は JBoss 7.1.1 と Weld CDI コンテナーを使用しています。

JM。

4

1 に答える 1

4

CDI の背後にある基本的な概念は、スコープとそれに関連するコンテキストの概念であるためです。それがContexts in Contexts と Dependency Injection です。基本的に、スコープを持つ Bean には明確に定義されたライフサイクルがありますが、Bean を自分でインスタンス化すると、そのライフサイクルが何であるかがわかりません。CDI仕様のセクション2.4スコープを読んでください。

もう少し詳しく説明すると、CDI は@Inject依存関係だけでなく、そのライフサイクルも管理します。これは、単純なインスタンス化と依存性注入を超え@PreDestroyて、Bean インスタンス自体だけでなく、すべての依存インスタンスの終了 (呼び出し) にまで及びます。自分で Bean をインスタンス化する場合、その最後の部分をいつ実行するかはわかりません。

于 2013-03-16T14:59:20.153 に答える