@TargetSE(valueSE={METHODSE,FIELDSE}) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE public @interface Produces
プロデューサーのメソッドまたはフィールドを識別します。Bean クラスのメソッドまたはフィールドに適用できます。
プロデューサーメソッドは、マネージ Bean クラスまたはセッション Bean クラスの非抽象メソッドである必要があります。プロデューサーメソッドは、静的または非静的のいずれかです。Bean がセッション Bean の場合、プロデューサーメソッドは EJB のビジネスメソッドまたは Bean クラスの静的メソッドのいずれかである必要があります。
public class Shop { @Produces @ApplicationScoped @Catalog @Named("catalog") List<Product> getProducts() { ... } ... }
プロデューサーフィールドは、マネージド Bean クラスまたはセッション Bean クラスのフィールドである必要があります。プロデューサーフィールドは、静的または非静的のいずれかです。Bean がセッション Bean の場合、プロデューサーフィールドは Bean クラスの静的フィールドである必要があります。
public class Shop { @Produces @ApplicationScoped @Catalog @Named("catalog") List<Product> products = ...; ... }
プロデューサーメソッドが null 値を返す場合がある場合、またはアクセス時にプロデューサーフィールドに null 値が含まれる場合がある場合、プロデューサーメソッドまたはフィールドのスコープは @Dependent
である必要があります。
プロデューサーメソッドの戻り値の型またはプロデューサーフィールドの型は、型変数ではない場合があります。
プロデューサーメソッドの戻り値の型またはプロデューサーフィールドの型がパラメーター化された型である場合、実際の型パラメーターまたは型パラメーターごとに型変数を指定する必要があります。
プロデューサーメソッドの戻り値の型またはプロデューサーフィールド型が型変数を持つパラメーター化された型である場合、スコープ @Dependent
が必要です。
プロデューサーメソッドには、任意の数のパラメーターを含めることができます。すべてのプロデューサーメソッドパラメーターはインジェクションポイントです。
public class OrderFactory { @Produces @ConversationScoped public Order createCurrentOrder(Shop shop, @Selected Product product) { Order order = new Order(product, shop); return order; } }
Bean は、複数のプロデューサーメソッドまたはフィールドを宣言する場合があります。
プロデューサーのメソッドとフィールドは、Bean サブクラスに継承されません。
インターセプターとデコレーターは、プロデューサーメソッドまたはフィールドを宣言できません。
@Disposes
Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.