27

追加のアノテーション@NamedなしのCDIBeanのデフォルトスコープはありますか?溶接の公式ドキュメント@...Scopedに関連情報が見つかりませんでした。

Beanは、追加の@NamedアノテーションなしでJSFを介してアクセスできるため、暗黙的なスコープが存在する可能性があります。

ありがとうございました

4

1 に答える 1

47

デフォルトのスコープは、溶接ドキュメント@Dependentに記載されているように、依存する疑似スコープです。

CDI は、いわゆる従属疑似スコープを備えています。これは、スコープ タイプを明示的に宣言しない Bean のデフォルト スコープです。[...] 依存する Bean のインスタンスは、異なるクライアントまたは異なるインジェクション ポイント間で共有されることはありません。厳密には、他のオブジェクトの依存オブジェクトです。属するオブジェクトが作成されるとインスタンス化され、属するオブジェクトが破棄されると破棄されます。

このアノテーションのjavadoc は、このスコープに関する詳細情報を提供します。

スコープ @Dependent で宣言された Bean は、他の組み込みスコープ タイプを持つ Bean とは異なる動作をします。Bean がスコープ @Dependent を持つように宣言されている場合:

  • 注入された Bean のインスタンスが複数の注入ポイント間で共有されることはありません。
  • コンテナーによって作成されるオブジェクトに注入された Bean のインスタンスは、新しく
    作成されたオブジェクトのライフサイクルにバインドされます。
  • EL 名で Bean を参照する JSF または JSP ページの統合 EL 式が評価されると、Bean のインスタンスが最大で 1 つインスタンス化されます。このインスタンスは、EL 式の単一の評価のみを提供するために存在します。Bean EL 名
    が EL 式に複数回出現する場合は再利用されますが、EL 式が再度評価されるとき、または別の EL 式
    が評価されるときに再利用されることはありません。
  • プロデューサー メソッド、プロデューサー フィールド、ディスポーザー メソッド、またはオブザーバー メソッドの呼び出しを受け取る Bean のインスタンスは、
    その呼び出しのみを処理するために存在します。
  • ディスポーザ メソッドまたはオブザーバ メソッドのメソッド パラメータに注入された Bean のインスタンスは、メソッド
    呼び出しのみを処理するために存在します。
于 2012-04-24T07:38:25.127 に答える