インターフェース ObjectProvider<T>
- 型パラメーター:
T
- オブジェクト型
- すべてのスーパーインターフェース:
IterableSE<T>
,ObjectFactory<T>
ObjectFactory
のバリアントで、プログラムによるオプションと緩やかな一意でない処理を可能にします。BeanFactory
環境では、ファクトリから取得されたすべての ObjectProvider
は、特定の Bean 型の BeanFactory
にバインドされ、すべてのプロバイダー呼び出しがファクトリに登録された Bean 定義と照合されます。このような呼び出しはすべて、基礎となるファクトリ状態で動的に動作し、呼び出しごとにリクエストされたターゲットオブジェクトが新たに解決されることに注意してください。
5.1 以降、このインターフェースは Iterable
SE を継承し、Stream
SE サポートを提供します。for
ループで使用でき、Iterable.forEach(java.util.function.Consumer<? super T>)
SE 反復を提供し、コレクションスタイルの stream()
アクセスを可能にします。
6.2 以降、このインターフェースはすべてのメソッドのデフォルト実装を宣言します。これにより、ユニットテストなどのカスタム方式での実装が容易になります。一般的な目的では、stream()
を実装して他のすべてのメソッドを有効にします。または、呼び出し元が期待する特定のメソッド (たとえば、getObject()
または getIfAvailable()
) のみを実装することもできます。
getObject()
は null
を返すことはなく、代わりに NoSuchBeanDefinitionException
をスローしますが、getIfAvailable()
は一致する Bean がまったく存在しない場合に null
を返します。ただし、両方のメソッドは、明確な一意の勝者なしで一致する Bean が複数見つかった場合は NoUniqueBeanDefinitionException
をスローします (以下を参照)。最後に、getIfUnique()
は、一致する Bean が見つからない場合と、一意の勝者なしで一致する Bean が複数見つかった場合の両方で null
を返します。
一意性は、一般的にはコンテナーの候補解決アルゴリズムによりますが、常に「プライマリ」フラグ (候補 Bean のうち 1 つだけがプライマリとしてマークされている) と「フォールバック」フラグ (候補 Bean のうち 1 つだけがフォールバックとしてマークされていない) が尊重されます。非アノテーションベースのインジェクションポイントの場合でも、デフォルト候補フラグは常に考慮され、プライマリ / フォールバックの明確な指示がない場合は、単一のデフォルト候補が優先されます。
- 導入:
- 4.3
- 作成者:
- Juergen Hoeller
- 関連事項:
フィールドのサマリー
フィールド修飾子と型フィールド説明static final PredicateSE<ClassSE<?>>
フィルタリングされていない型一致の述語。非デフォルトの候補を含みますが、インジェクションポイントで使用される場合は非オートワイヤー候補は除外されます。メソッドのサマリー
修飾子と型メソッド説明default T
このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。default T
getIfAvailable
(SupplierSE<T> defaultSupplier) このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。default T
このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。default T
getIfUnique
(SupplierSE<T> defaultSupplier) このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。default T
このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。default T
このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。default void
ifAvailable
(ConsumerSE<T> dependencyConsumer) このファクトリが管理するオブジェクトのインスタンス(使用可能な場合は共有または独立)を使用します。default void
ifUnique
(ConsumerSE<T> dependencyConsumer) 一意である場合、このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を使用します。default IteratorSE<T>
iterator()
特定の順序の保証なしで(ただし、通常は登録順で)、一致するすべてのオブジェクトインスタンスでIterator
SE を返します。ファクトリの共通の順序コンパレーターに従って事前に順序付けされた、一致するすべてのオブジェクトインスタンスのシーケンシャルStream
SE を返します。orderedStream
(PredicateSE<ClassSE<?>> customFilter) ファクトリの共通順序比較器に従って事前に順序付けされた、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされたStream
SE を返します。orderedStream
(PredicateSE<ClassSE<?>> customFilter, boolean includeNonSingletons) ファクトリの共通順序比較器に従って事前に順序付けされた、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされたStream
SE を返します。stream()
特定の順序を保証せずに、一致するすべてのオブジェクトインスタンスのシーケンシャルStream
SE を返します(ただし、通常は登録順です)。stream
(PredicateSE<ClassSE<?>> customFilter) 特定の順序保証なしで (通常は登録順で)、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされたStream
SE を返します。stream
(PredicateSE<ClassSE<?>> customFilter, boolean includeNonSingletons) 特定の順序保証なしで (通常は登録順で)、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされたStream
SE を返します。インターフェース java.lang.IterableSE から継承されたメソッド
forEachSE, spliterator
フィールドの詳細
UNFILTERED
フィルタリングされていない型一致の述語。非デフォルトの候補を含みますが、インジェクションポイントで使用される場合は非オートワイヤー候補は除外されます。
メソッドの詳細
getObject
インターフェースからコピーされた説明:ObjectFactory
このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。- 次で指定:
- インターフェース
ObjectFactory<T>
のgetObject
- 戻り値:
- 結果のインスタンス
- 例外:
BeansException
- 作成エラーの場合
getObject
このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。BeanFactory.getBean(String, Object...)
の行に沿って、明示的な構築引数を指定できます。- パラメーター:
args
- 対応するインスタンスを作成するときに使用する引数- 戻り値:
- Bean のインスタンス
- 例外:
BeansException
- 作成エラーの場合- 関連事項:
getIfAvailable
このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。- 戻り値:
- Bean のインスタンス、または使用できない場合は
null
- 例外:
BeansException
- 作成エラーの場合- 関連事項:
getIfAvailable
このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。- パラメーター:
defaultSupplier
- ファクトリに何も存在しない場合にデフォルトオブジェクトを提供するためのコールバック- 戻り値:
- Bean のインスタンス、またはそのような Bean が使用できない場合は指定されたデフォルトオブジェクト
- 例外:
BeansException
- 作成エラーの場合- 導入:
- 5.0
- 関連事項:
ifAvailable
このファクトリが管理するオブジェクトのインスタンス(使用可能な場合は共有または独立)を使用します。- パラメーター:
dependencyConsumer
- 可能な場合はターゲットオブジェクトを処理するためのコールバック (他に呼ばれない)- 例外:
BeansException
- 作成エラーの場合- 導入:
- 5.0
- 関連事項:
getIfUnique
このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。- 戻り値:
- Bean のインスタンス、または
null
のインスタンスがない場合または一意でない場合 (つまり、プライマリとしてマークされていない複数の候補が見つかりました) - 例外:
BeansException
- 作成エラーの場合- 関連事項:
getIfUnique
このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。- パラメーター:
defaultSupplier
- ファクトリに一意の候補が存在しない場合にデフォルトオブジェクトを提供するためのコールバック- 戻り値:
- Bean のインスタンス、またはそのような Bean が使用できない場合、ファクトリで一意でない場合は、提供されたデフォルトオブジェクト (つまり、プライマリとしてマークされていない複数の候補が見つかりました)
- 例外:
BeansException
- 作成エラーの場合- 導入:
- 5.0
- 関連事項:
ifUnique
一意である場合、このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を使用します。- パラメーター:
dependencyConsumer
- 一意の場合、ターゲットオブジェクトを処理するためのコールバック (他に呼ばれない)- 例外:
BeansException
- 作成エラーの場合- 導入:
- 5.0
- 関連事項:
iterator
特定の順序の保証なしで(ただし、通常は登録順で)、一致するすべてのオブジェクトインスタンスでIterator
SE を返します。- 次で指定:
- インターフェース
IterableSE<T>
のiterator
- 導入:
- 5.1
- 関連事項:
stream
特定の順序を保証せずに、一致するすべてのオブジェクトインスタンスのシーケンシャルStream
SE を返します(ただし、通常は登録順です)。メモ: デフォルトでは、結果は、インジェクションポイントとターゲット Bean の修飾子、および一致する Bean の一般的なオートワイヤー候補ステータスに従ってフィルタリングされる場合があります。型が一致する候補に対するカスタムフィルタリングの場合は、代わりに
stream(Predicate)
を使用します (場合によってはUNFILTERED
も使用します)。- 導入:
- 5.1
- 関連事項:
orderedStream
ファクトリの共通の順序コンパレーターに従って事前に順序付けされた、一致するすべてのオブジェクトインスタンスのシーケンシャルStream
SE を返します。標準の Spring アプリケーションコンテキストでは、これは
Ordered
の規則に従って順序付けされ、アノテーションベースの構成の場合は、Order
アノテーションも考慮されます。これは、リスト / 配列型の複数要素のインジェクションポイントに類似しています。デフォルトのメソッドは、
stream()
メソッドにOrderComparator
を適用します。必要に応じてこれをオーバーライドして、AnnotationAwareOrderComparator
を適用できます。メモ: デフォルトでは、結果は、インジェクションポイントとターゲット Bean の修飾子、および一致する Bean の一般的なオートワイヤー候補ステータスに従ってフィルタリングされる場合があります。型が一致する候補に対するカスタムフィルタリングの場合は、代わりに
stream(Predicate)
を使用します (場合によってはUNFILTERED
も使用します)。- 導入:
- 5.1
- 関連事項:
stream
特定の順序保証なしで (通常は登録順で)、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされたStream
SE を返します。- パラメーター:
customFilter
- 生の Bean 型マッチの中から Bean を選択するためのカスタム型フィルター (または、デフォルトのフィルタリングなしですべての生の型に一致する場合はUNFILTERED
)- 導入:
- 6.2.3
- 関連事項:
orderedStream
ファクトリの共通順序比較器に従って事前に順序付けされた、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされたStream
SE を返します。- パラメーター:
customFilter
- 生の Bean 型マッチの中から Bean を選択するためのカスタム型フィルター (または、デフォルトのフィルタリングなしですべての生の型に一致する場合はUNFILTERED
)- 導入:
- 6.2.3
- 関連事項:
stream
特定の順序保証なしで (通常は登録順で)、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされたStream
SE を返します。- パラメーター:
customFilter
- 生の Bean 型マッチの中から Bean を選択するためのカスタム型フィルター (または、デフォルトのフィルタリングなしですべての生の型に一致する場合はUNFILTERED
)includeNonSingletons
- プロトタイプ Bean またはスコープ Bean も含めるか、シングルトンのみを含めるか (FactoryBeans にも適用)- 導入:
- 6.2.5
- 関連事項:
orderedStream
default StreamSE<T> orderedStream(PredicateSE<ClassSE<?>> customFilter, boolean includeNonSingletons) ファクトリの共通順序比較器に従って事前に順序付けされた、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされたStream
SE を返します。- パラメーター:
customFilter
- 生の Bean 型マッチの中から Bean を選択するためのカスタム型フィルター (または、デフォルトのフィルタリングなしですべての生の型に一致する場合はUNFILTERED
)includeNonSingletons
- プロトタイプ Bean またはスコープ Bean も含めるか、シングルトンのみを含めるか (FactoryBeans にも適用)- 導入:
- 6.2.5
- 関連事項: