T
- 必要な Bean 型 public interface Instance<T> extends IterableSE<T>, Provider<T>
アプリケーションが、必要な型と修飾子の指定された組み合わせで Bean のインスタンスを動的に取得できるようにします。
特定の状況では、インジェクションはコンテキスト参照を取得するための最も便利な方法ではありません。例: 次の場合は使用できません。
これらの状況では、Instance
のインスタンスが注入される可能性があります。
@Inject Instance<PaymentProcessor> paymentProcessor;
修飾子の任意の組み合わせをインジェクションポイントで指定できます。
@Inject @PayBy(CHEQUE) Instance<PaymentProcessor> chequePaymentProcessor;
または、@Any
修飾子を使用して、アプリケーションで修飾子を動的に指定できます。
@Inject @Any Instance<PaymentProcessor> anyPaymentProcessor;
最後に、@New
修飾子を使用して、アプリケーションが @New
修飾 Bean を取得できるようにします。
@Inject @New(ChequePaymentProcessor.class) Instance<PaymentProcessor> chequePaymentProcessor;
注入された Instance
の場合:
継承された Provider.get()
メソッドは、必要な型と必要な修飾子に一致し、親 Instance
が注入されたクラスへの注入に適格であるか、UnsatisfiedResolutionException
または AmbiguousResolutionException
をスローする一意の Bean のコンテキスト参照を返します。
PaymentProcessor pp = chequePaymentProcessor.get();
継承された Iterable.iterator()
SE メソッドは、必要な型と必要な修飾子に一致し、親 Instance
が注入されたクラスへの注入に適格な Bean のコンテキスト参照に対するイテレーターを返します。
for (PaymentProcessor pp : anyPaymentProcessor) pp.test();
Provider.get()
, Iterable.iterator()
SE, AnnotationLiteral
, TypeLiteral
修飾子と型 | メソッドと説明 |
---|---|
void | destroy(T instance) 呼び出されると、Bean のスコープ型のアクティブコンテキストオブジェクトが Bean インスタンスの破棄をサポートしている場合、コンテナーはインスタンスを破棄します。 |
boolean | isAmbiguous() 必要な型と修飾子に一致し、親 Instance が注入されたクラスへの注入に適格な Bean が複数あるかどうかを判別します。 |
default boolean | isResolvable() 必要な型と修飾子に一致し、親 Instance が注入されたクラスへの注入に適格な Bean が 1 つだけあるかどうかを判別します。 |
boolean | isUnsatisfied() 必要な型と修飾子に一致し、親 Instance が注入されたクラスへの注入に適格な Bean がないかどうかを判別します。 |
Instance<T> | select(AnnotationSE... qualifiers) 指定された追加の必須修飾子の子 Instance を取得します。 |
<U extends T> | select(ClassSE<U> subtype, AnnotationSE... qualifiers) 指定された必須型および追加の必須修飾子の子 Instance を取得します。 |
<U extends T> | select(TypeLiteral<U> subtype, AnnotationSE... qualifiers) 指定された必須型および追加の必須修飾子の子 Instance を取得します。 |
default StreamSE<T> | stream() 呼び出されると、このインスタンスで使用可能な Bean のストリームを返します。 |
forEachSE, iteratorSE, spliteratorSE
Instance<T> select(AnnotationSE... qualifiers)
指定された追加の必須修飾子の子 Instance
を取得します。
qualifiers
- 追加で必要な修飾子 Instance
IllegalArgumentExceptionSE
- 同じ非反復修飾子型の 2 つのインスタンス、または修飾子型ではないアノテーションのインスタンスが渡された場合 IllegalStateExceptionSE
- コンテナーがすでにシャットダウンされている場合 <U extends T> Instance<U> select(ClassSE<U> subtype, AnnotationSE... qualifiers)
指定された必須型および追加の必須修飾子の子 Instance
を取得します。
U
- 必要な型 subtype
- 必要な型を表す Class
SEqualifiers
- 追加で必要な修飾子 Instance
IllegalArgumentExceptionSE
- 同じ非反復修飾子型の 2 つのインスタンス、または修飾子型ではないアノテーションのインスタンスが渡された場合 IllegalStateExceptionSE
- コンテナーがすでにシャットダウンされている場合 <U extends T> Instance<U> select(TypeLiteral<U> subtype, AnnotationSE... qualifiers)
指定された必須型および追加の必須修飾子の子 Instance
を取得します。
U
- 必要な型 subtype
- 必要な型を表す TypeLiteral
qualifiers
- 追加で必要な修飾子 Instance
IllegalArgumentExceptionSE
- 同じ非反復修飾子型の 2 つのインスタンス、または修飾子型ではないアノテーションのインスタンスが渡された場合 IllegalStateExceptionSE
- コンテナーがすでにシャットダウンされている場合 default StreamSE<T> stream()
呼び出されると、このインスタンスで使用可能な Bean のストリームを提供します。Bean が見つからない場合は、空のストリームを返します。
Instance
オブジェクトに関連付けられた Bean を表す Stream
boolean isUnsatisfied()
必要な型と修飾子に一致し、親 Instance
が注入されたクラスへの注入に適格な Bean がないかどうかを判別します。
Instance
が注入されたクラスへの注入に適格な Bean がない場合は true
、それ以外の場合は false
。boolean isAmbiguous()
必要な型と修飾子に一致し、親 Instance
が注入されたクラスへの注入に適格な Bean が複数あるかどうかを判別します。
Instance
が注入されたクラスへの注入に適格な Bean が複数ある場合は true
、それ以外の場合は false
。default boolean isResolvable()
必要な型と修飾子に一致し、親 Instance
が注入されたクラスへの注入に適格な Bean が 1 つだけあるかどうかを判別します。
Instance
が注入されたクラスへの注入に適格な Bean が 1 つだけある場合は true
、それ以外の場合は false
。void destroy(T instance)
呼び出されると、Bean のスコープ型のアクティブなコンテキストオブジェクトが Bean インスタンスの破棄をサポートしている場合、コンテナーはインスタンスを破棄します。すべての通常のスコープの組み込みコンテキストは、Bean インスタンスの破棄をサポートします。
渡されるインスタンスは、同じ Instance
オブジェクトから取得された依存スコープの Bean インスタンスか、通常のスコープの Bean インスタンスのクライアントプロキシのいずれかである必要があります。
instance
- 破棄するインスタンス UnsupportedOperationExceptionSE
- Bean のスコープ型のアクティブコンテキストオブジェクトが Bean インスタンスの破棄をサポートしていない場合 Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.