7.14. Bean プロキシー
通常、インジェクトされた bean のクライアントは bean インスタンスへの直接参照を保持しません。bean が依存オブジェクト (スコープ @Dependent
) でない場合、コンテナーはプロキシーオブジェクトを使用して、インジェクトされたすべての参照を bean にリダイレクトする必要があります。
この bean プロキシーはクライアントプロキシーと呼ばれ、メソッド呼び出しを受け取る bean インスタンスが、現在のコンテキストと関連するインスタンスになるようにします。またクライアントプロキシーは、他のインジェクトされた bean を再帰的にシリアライズせずに、セッションコンテキストなどのコンテキストにバインドされる bean をディスクへシリアライズできるようにします。
Java の制限により、コンテナーによるプロキシーの作成が不可能な Java の型があります。これらの型の 1 つで宣言されたインジェクションポイントが、@Dependent
以外のスコープを持つ bean に解決すると、コンテナーがデプロイメントをアボートします。
特定の Java の型ではコンテナーによってプロキシーを作成できません。これらの型には次のようなものがあります。
- パラメーターのない非プライベートコンストラクターを持たないクラス
-
final
が宣言されたクラスまたはfinal
メソッドを持つクラス。 - アレイおよびプリミティブ型。