アノテーション型 Dependent
@TargetSE({METHODSE,TYPESE,FIELDSE}) @RetentionSE(RUNTIMESE) @DocumentedSE @Scope @InheritedSE public @interface Dependent
Bean が従属疑似スコープに属することを指定します。
スコープ
@Dependent
で宣言された Bean は、他の組み込みスコープ型の Bean とは異なる動作をします。Bean がスコープ@Dependent
を持つように宣言されている場合:- Bean の注入されたインスタンスは、複数のインジェクションポイント間で共有されることはありません。
- コンテナーによって作成されているオブジェクトに注入された Bean のインスタンスはすべて、新しく作成されたオブジェクトのライフサイクルにバインドされます。
- EL 名で Bean を参照する JSF または JSP ページの UnifiedEL 式が評価されると、Bean のインスタンスが最大で 1 つインスタンス化されます。このインスタンスは、EL 式の 1 つの評価のみを処理するために存在します。Bean EL 名が EL 式に複数回出現する場合に再利用されますが、EL 式が再度評価されるとき、別の EL 式が評価されるときに再利用されることはありません。
- プロデューサーメソッド、プロデューサーフィールド、ディスポーザーメソッド、オブザーバーメソッドの呼び出しを受け取る Bean のインスタンスは、その呼び出しのみを処理するために存在します。
- ディスポーザーメソッドまたはオブザーバーメソッドのメソッドパラメーターに挿入された Bean のインスタンスは、メソッド呼び出しのみを処理するために存在します。
@Dependent
スコープのコンテキストオブジェクトのContext.get(Contextual, CreationalContext)
操作を呼び出すたびに、指定された Bean の新しいインスタンスが返されます。@Dependent
スコープのコンテキストオブジェクトのContext.get(Contextual)
操作を呼び出すたびに、NULL 値が返されます。@Dependent
スコープは常にアクティブです。スコープ
@Dependent
を持つ Bean の多くのインスタンスは、他の Bean または Java EE コンポーネントクラスインスタンスに属し、依存オブジェクトと呼ばれます。- デコレータとインターセプタのインスタンスは、それらがデコレートする Bean インスタンスの依存オブジェクトです。
- スコープ
@Dependent
がフィールドに注入された Bean のインスタンス、Bean コンストラクターまたは初期化子メソッドは、それが注入された Bean または Java EE コンポーネントクラスインスタンスの従属オブジェクトです。 - スコープ
@Dependent
がプロデューサーメソッドに注入された Bean のインスタンスは、プロデューサーメソッド Bean インスタンスの依存オブジェクトです。 Instance
の直接呼び出しによって取得されたスコープ@Dependent
を持つ Bean のインスタンスは、Instance
のインスタンスの従属オブジェクトです。
コンテナーが Bean またはインジェクションをサポートする Java EE コンポーネントクラスのインスタンスを破棄すると、
@PreDestroy
コールバックが完了した後、サーブレットdestroy()
メソッドが呼び出された後、コンテナーはすべての依存オブジェクトを破棄します。- 作成者:
- Gavin King, Pete Muir