11.2.4.2. Bean であるクラスのタイプ
管理対象 bean は Java クラスです。管理対象 bean の基本的なライフサイクルやセマンティクスは、管理対象 Bean の仕様で定義されています。bean クラス
@ManagedBean
アノテーションを付けることで明示的に管理対象 bean を宣言できますが、CDI ではその必要はありません。この仕様によると、CDI コンテナーでは、以下の条件を満たすクラスはすべて管理対象 bean として扱われます。
- 非静的な内部クラスではないこと。
- これは具象クラスであるか、
@Decorator
アノテーションが付けられています。 - EJB コンポーネントを定義するアノテーションが付与されていないこと、あるいは
ejb-jar.xml
で EJB bean クラスとして宣言されていること。 - インターフェイスを実装していません
javax.enterprise.inject.spi.Extension
. - パラメーターのないコンストラクターか、
@Inject
アノテーションが付与されたコンストラクターがあること。
管理対象 bean の無制限の bean 型には、直接的あるいは間接的に実装する bean クラス、スーパークラスすべて、およびインターフェースすべてが含まれます。
管理対象 Bean にパブリックフィールドがある場合は、デフォルトの @Dependent スコープが必要です。