パッケージ jakarta.enterprise.inject

アノテーション型 Specializes


  • @TargetSE({TYPESE,METHODSE})
    @RetentionSE(RUNTIMESE)
    @DocumentedSE
    public @interface Specializes

    Bean が別の Bean を直接特殊化していることを示します。Bean クラスまたはプロデューサーメソッドに適用できます。

    Bean が 2 番目の Bean を直接特殊化する場合、次を継承します。

    • 2 番目の Bean のすべての修飾子、および
    • 2 番目の Bean の名前(ある場合)。

    2 番目の Bean に名前がある場合、Bean は @Named を使用して名前を宣言しない場合があります。さらに、Bean には、2 番目の Bean のすべての Bean 型が必要です。

    • 管理対象 Bean の Bean クラスに @Specializes というアノテーションが付けられている場合、Bean クラスは 2 番目の管理対象 Bean の Bean クラスを直接拡張する必要があります。次に、最初のマネージド Bean は、2 番目のマネージド Bean を直接特殊化します。
    • セッション Bean の Bean クラスに @Specializes というアノテーションが付けられている場合、Bean クラスは 2 番目のセッション Bean の Bean クラスを直接拡張する必要があります。次に、最初のセッション Bean は、2 番目のセッション Bean を直接特殊化します。
    • プロデューサーメソッドに @Specializes アノテーションが付けられている場合、非静的であり、別のプロデューサーメソッドを直接オーバーライドする必要があります。次に、最初のプロデューサーメソッドは 2 番目のプロデューサーメソッドを直接特殊化します。

    Bean が有効な Bean によって特殊化されている場合、最初の Bean は無効になります。

    CDI Lite の実装は、特殊化のサポートを提供する必要はありません。

    作成者:
    Gavin King, Pete Muir