7.9. ステレオタイプ
多くのシステムでは、アーキテクチャーパターンを使用して繰り返し発生する Bean ロールのセットを生成します。ステレオタイプを使用すると、このようなロールを指定し、中心的な場所で、このロールを持つ Bean に対する共通メタデータを宣言できます。
ステレオタイプにより、以下のいずれかの組み合わせがカプセル化されます。
- デフォルトのスコープ。
- インターセプターバインディングのセット。
また、ステレオタイプにより、以下の 2 つのいずれかを指定できます。
- ステレオタイプがデフォルトの bean EL 名であるすべての bean。
- ステレオタイプが代替であるすべての bean。
Bean は、ステレオタイプを 0 個以上宣言できます。ステレオタイプは、他の複数のアノテーションをパッケージ化する @Stereotype
アノテーションです。ステレオタイプアノテーションは、bean クラス、プロデューサーメソッド、またはフィールドに適用できます。
ステレオタイプからスコープを継承するクラスは、そのステレオタイプをオーバーライドし、bean に直接スコープを指定できます。
また、ステレオタイプが @Named
アノテーションを持つ場合、配置された bean はデフォルトの bean 名を持ちます。この bean は、@Named
アノテーションが bean で直接指定された場合に、この名前をオーバーライドできます。名前付き bean の詳細は、名前付き Bean を参照してください。
7.9.1. ステレオタイプの使用
ステレオタイプを使用しないと、アノテーションが煩雑になる可能性があります。このタスクは、ステレオタイプを使用して煩雑さを軽減し、コードを効率化する方法を示しています。
例: 煩雑なアノテーション
@Secure @Transactional @RequestScoped @Named public class AccountManager { public boolean transfer(Account a, Account b) { ... } }
ステレオタイプの定義および使用
ステレオタイプを定義します。
@Secure @Transactional @RequestScoped @Named @Stereotype @Retention(RUNTIME) @Target(TYPE) public @interface BusinessComponent { ... }
ステレオタイプを使用します。
@BusinessComponent public class AccountManager { public boolean transfer(Account a, Account b) { ... } }