web-dev-qa-db-ja.com

名前付きCDI Beanのデフォルトのスコープは何ですか?

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

@Named Beanは、追加の注釈なしでJSFを介してアクセスできるため、暗黙のスコープがありそうです。

ありがとうございました

26
kostja

デフォルトのスコープは、依存する疑似スコープ@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のインスタンスは、メソッドにサービスを提供するために存在します
    呼び出しのみ。
42
Matt Handy