@TargetSE(valueSE={METHODSE,FIELDSE}) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE public @interface Produces
プロデューサーのメソッドまたはフィールドを識別します。Bean クラスのメソッドまたはフィールドに適用できます。
プロデューサーメソッドは、マネージ Bean クラスまたはセッション Bean クラスの非抽象メソッドである必要があります。プロデューサーメソッドは、静的または非静的のいずれかです。Bean がセッション Bean の場合、プロデューサーメソッドは Jakarta Enterprise Bean のビジネスメソッドまたは 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 サブクラスに継承されません。
インターセプターとデコレーターは、プロデューサーメソッドまたはフィールドを宣言できません。
@DisposesCopyright © 2019 Eclipse Foundation.
Use is subject to license terms.