私はCDI Beanに注入したいPOJOを持っています。これで、beans.xmlの検出モードを「注釈付き」から「すべて」に変更できることがわかりました。しかし、POJOにアノテーションを定義するbeanを与えるだけでもいいです。私は注釈がうまくいくと思いますが、POJOを注射可能にする単なる目的のための正しい注釈は何ですか?javaクラスが注入可能な正しい注釈は何ですか?
答えて
@Dependentは、すべての注入ポイントでそのBeanの新しいインスタンスを作成します。通常、最も侵入しにくい。
http://docs.oracle.com/javaee/7/api/javax/enterprise/context/Dependent.html
あなたはまったくの注釈を持たないかもしれない、何の注釈は(すなわち、それは管理させるか、CDI Beanに)あなたの豆の注射を行う必要はありません。それがあるべきクラスを注入するために
:
- 具象クラス(つまり、抽象的またはインタフェースではない)、またはそれが
@Decorator
- として注釈すべきである
@Inject
で注釈を付け引数なしのコンストラクタまたはコンストラクタを持つべき
- EJBコンポーネント定義アノテーションでアノテートしたり、
ejb-jar.xml
でEJB Beanクラスとして宣言したりしてはいけません。
これで、すべての通常のクラスを注入できます。また、クラスはBeanアーカイブ内に配置する必要があります。 CDI 1.1からは、暗黙的と明示的の2種類のBeanアーカイブがあります。 Oracleのドキュメントから:
明示的な豆のアーカイブは空のファイルをすることができbeans.xmlの デプロイメントディスクリプタを、含まれているアーカイブには、バージョン 番号が含まれていない、またはbean-とバージョン番号1.1が含まれている、ありますdiscovery-mode 属性はallに設定されています。たとえば:
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd」 バージョン= "1.1" 豆発見モード= "すべて"> ... CDIを管理することができますそして@Vetoedで注釈を付けたものを除き、明示的なアーカイブ内の任意のBeanを注入します。
暗黙の豆のアーカイブは、スコープタイプの注釈を付け、いくつかの豆 を含むアーカイブでは、何のbeans.xmlの展開 記述が含まれていない、または含まれています bean-discovery-mode属性が注釈付きに設定されたbeans.xmlデプロイメント記述子
暗黙のアーカイブでは、CDスコープタイプの の注釈付き豆だけを管理して注入することができます。
Webアプリケーションの場合、beans.xmlデプロイメント記述子( が存在する場合)は、WEB-INFディレクトリに存在する必要があります。 EJBモジュールまたはJAR ファイルの場合、beans.xmlデプロイメント記述子が存在する場合は、 META-INFディレクトリに存在する必要があります。あなたは豆の発見モード
annotated
に滞在したいと仮定すると、
、あなたはそれがとてもimplicit bean
と呼ばれるようになりますあなたのPOJOの豆の定義注釈を持っている必要があります。ここでCDI specから関連引用である:
ビーン定義注釈のセットが含まれています
@ApplicationScoped、@SessionScoped、@ConversationScopedと@RequestScoped注釈を、
通常、他のすべてのスコープタイプ
@Interceptorおよび@Decoratorアノテーション
すべてのステレオタイプ注釈(すなわち、 @Stereotypeで注釈を付けられた注釈)、
および@Dependentスコープ注釈。 については
正しいとする注釈 - あなたのユースケースに依存しています。一般的には、Beanのライフサイクル(リクエスト、会話、アプリケーションと同じ長さのアプリケーションスコープ)を考慮する必要があります。しかし、あなたが本当に気にしないなら、私はちょうど@Dependent
に行くと言うでしょう。 実際に、Bean検出モードall
を持っていて、そのPOJOクラスのアノテーションがない場合は、CDIが@Dependent
という名前でピックアップされます。
質問にお答えします。
- 1. @codeのJava注釈は何ですか
- 2. FIELDクラスのjava注釈が機能していません
- 3. Java Spring - 注釈設定クラス
- 4. 反復可能な注釈属性からクラスを取得
- 5. Java注釈プロセッサ - 注釈付きKotlinクラス単位テスト
- 6. 注釈注入とXML注入
- 7. Javaの注釈がCallableで機能しない
- 8. 注釈コールアウトが機能しないSwift
- 9. Lombok @ Log4j2注釈が機能しない
- 10. @Component Springs注釈が機能しない
- 11. @JsonDeserialize注釈が機能しない
- 12. iOSの - MKMapView - ドラッグ可能な注釈
- 13. Spring再試行可能な注釈ClassNotFoundException
- 14. コンストラクタによる注入とGuiceによるフィールド注釈による注入の違いは何ですか?
- 15. @Scheduled注釈が正しく機能していませんか?
- 16. 注釈タイプパラメータJavaでは
- 17. スプリングサービス注釈とは何ですか?
- 18. HardCoded注釈は何ですか?
- 19. Jerseyの@ManagedAsync注釈は何ですか?
- 20. Genericsクラスで注入するとCDIが動作しない - Java
- 21. 注釈付きクラス
- 22. 依存性注入 - Unityコンストラクタ注入が機能しない、ゲッタセッタ注入のみ
- 23. ダガー2では、同じクラスのフィールド注入とコンストラクター注入が可能ですか?
- 24. Javaクラスの注釈仕様ファイル形式?
- 25. 注釈付きクラスは春
- 26. Javaアダプタの注釈
- 27. カスタム注釈プロセッサ - Java
- 28. のJava XmlPath注釈
- 29. Javaコードの@param注釈の目的は何ですか?
- 30. Javaリフレクションを使用してJavaクラスで使用可能なメソッド注釈を表示