インターフェース ObjectProvider<T>

型パラメーター:
T - オブジェクト型
すべてのスーパーインターフェース:
IterableSE<T>ObjectFactory<T>

public interface ObjectProvider<T> extends ObjectFactory<T>, IterableSE<T>
インジェクションポイント用に特別に設計された ObjectFactory のバリアントで、プログラムによるオプションと緩やかな一意でない処理を可能にします。

BeanFactory 環境では、ファクトリから取得されたすべての ObjectProvider は、特定の Bean 型の BeanFactory にバインドされ、すべてのプロバイダー呼び出しがファクトリに登録された Bean 定義と照合されます。このような呼び出しはすべて、基礎となるファクトリ状態で動的に動作し、呼び出しごとにリクエストされたターゲットオブジェクトが新たに解決されることに注意してください。

5.1 以降、このインターフェースは IterableSE を継承し、StreamSE サポートを提供します。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>
    特定の順序の保証なしで(ただし、通常は登録順で)、一致するすべてのオブジェクトインスタンスで IteratorSE を返します。
    default StreamSE<T>
    ファクトリの共通の順序コンパレーターに従って事前に順序付けされた、一致するすべてのオブジェクトインスタンスのシーケンシャル StreamSE を返します。
    default StreamSE<T>
    ファクトリの共通順序比較器に従って事前に順序付けされた、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされた StreamSE を返します。
    default StreamSE<T>
    orderedStream(PredicateSE<ClassSE<?>> customFilter, boolean includeNonSingletons)
    ファクトリの共通順序比較器に従って事前に順序付けされた、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされた StreamSE を返します。
    default StreamSE<T>
    特定の順序を保証せずに、一致するすべてのオブジェクトインスタンスのシーケンシャル StreamSE を返します(ただし、通常は登録順です)。
    default StreamSE<T>
    stream(PredicateSE<ClassSE<?>> customFilter)
    特定の順序保証なしで (通常は登録順で)、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされた StreamSE を返します。
    default StreamSE<T>
    stream(PredicateSE<ClassSE<?>> customFilter, boolean includeNonSingletons)
    特定の順序保証なしで (通常は登録順で)、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされた StreamSE を返します。

    インターフェース java.lang.IterableSE から継承されたメソッド

    forEachSE, spliterator
  • フィールドの詳細

  • メソッドの詳細

    • getObject

      default T getObject() throws BeansException
      インターフェースからコピーされた説明: ObjectFactory
      このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。
      次で指定:
      インターフェース ObjectFactory<T>getObject 
      戻り値:
      結果のインスタンス
      例外:
      BeansException - 作成エラーの場合
    • getObject

      default T getObject(ObjectSE... args) throws BeansException
      このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。

      BeanFactory.getBean(String, Object...) の行に沿って、明示的な構築引数を指定できます。

      パラメーター:
      args - 対応するインスタンスを作成するときに使用する引数
      戻り値:
      Bean のインスタンス
      例外:
      BeansException - 作成エラーの場合
      関連事項:
    • getIfAvailable

      @Nullable default T getIfAvailable() throws BeansException
      このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。
      戻り値:
      Bean のインスタンス、または使用できない場合は null 
      例外:
      BeansException - 作成エラーの場合
      関連事項:
    • getIfAvailable

      default T getIfAvailable(SupplierSE<T> defaultSupplier) throws BeansException
      このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。
      パラメーター:
      defaultSupplier - ファクトリに何も存在しない場合にデフォルトオブジェクトを提供するためのコールバック
      戻り値:
      Bean のインスタンス、またはそのような Bean が使用できない場合は指定されたデフォルトオブジェクト
      例外:
      BeansException - 作成エラーの場合
      導入:
      5.0
      関連事項:
    • ifAvailable

      default void ifAvailable(ConsumerSE<T> dependencyConsumer) throws BeansException
      このファクトリが管理するオブジェクトのインスタンス(使用可能な場合は共有または独立)を使用します。
      パラメーター:
      dependencyConsumer - 可能な場合はターゲットオブジェクトを処理するためのコールバック (他に呼ばれない)
      例外:
      BeansException - 作成エラーの場合
      導入:
      5.0
      関連事項:
    • getIfUnique

      @Nullable default T getIfUnique() throws BeansException
      このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。
      戻り値:
      Bean のインスタンス、または null のインスタンスがない場合または一意でない場合 (つまり、プライマリとしてマークされていない複数の候補が見つかりました)
      例外:
      BeansException - 作成エラーの場合
      関連事項:
    • getIfUnique

      default T getIfUnique(SupplierSE<T> defaultSupplier) throws BeansException
      このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。
      パラメーター:
      defaultSupplier - ファクトリに一意の候補が存在しない場合にデフォルトオブジェクトを提供するためのコールバック
      戻り値:
      Bean のインスタンス、またはそのような Bean が使用できない場合、ファクトリで一意でない場合は、提供されたデフォルトオブジェクト (つまり、プライマリとしてマークされていない複数の候補が見つかりました)
      例外:
      BeansException - 作成エラーの場合
      導入:
      5.0
      関連事項:
    • ifUnique

      default void ifUnique(ConsumerSE<T> dependencyConsumer) throws BeansException
      一意である場合、このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を使用します。
      パラメーター:
      dependencyConsumer - 一意の場合、ターゲットオブジェクトを処理するためのコールバック (他に呼ばれない)
      例外:
      BeansException - 作成エラーの場合
      導入:
      5.0
      関連事項:
    • iterator

      default IteratorSE<T> iterator()
      特定の順序の保証なしで(ただし、通常は登録順で)、一致するすべてのオブジェクトインスタンスで IteratorSE を返します。
      次で指定:
      インターフェース IterableSE<T>iterator 
      導入:
      5.1
      関連事項:
    • stream

      default StreamSE<T> stream()
      特定の順序を保証せずに、一致するすべてのオブジェクトインスタンスのシーケンシャル StreamSE を返します(ただし、通常は登録順です)。

      メモ: デフォルトでは、結果は、インジェクションポイントとターゲット Bean の修飾子、および一致する Bean の一般的なオートワイヤー候補ステータスに従ってフィルタリングされる場合があります。型が一致する候補に対するカスタムフィルタリングの場合は、代わりに stream(Predicate) を使用します (場合によっては UNFILTERED も使用します)。

      導入:
      5.1
      関連事項:
    • orderedStream

      default StreamSE<T> orderedStream()
      ファクトリの共通の順序コンパレーターに従って事前に順序付けされた、一致するすべてのオブジェクトインスタンスのシーケンシャル StreamSE を返します。

      標準の Spring アプリケーションコンテキストでは、これは Ordered の規則に従って順序付けされ、アノテーションベースの構成の場合は、Order アノテーションも考慮されます。これは、リスト / 配列型の複数要素のインジェクションポイントに類似しています。

      デフォルトのメソッドは、stream() メソッドに OrderComparator を適用します。必要に応じてこれをオーバーライドして、AnnotationAwareOrderComparator を適用できます。

      メモ: デフォルトでは、結果は、インジェクションポイントとターゲット Bean の修飾子、および一致する Bean の一般的なオートワイヤー候補ステータスに従ってフィルタリングされる場合があります。型が一致する候補に対するカスタムフィルタリングの場合は、代わりに stream(Predicate) を使用します (場合によっては UNFILTERED も使用します)。

      導入:
      5.1
      関連事項:
    • stream

      default StreamSE<T> stream(PredicateSE<ClassSE<?>> customFilter)
      特定の順序保証なしで (通常は登録順で)、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされた StreamSE を返します。
      パラメーター:
      customFilter - 生の Bean 型マッチの中から Bean を選択するためのカスタム型フィルター (または、デフォルトのフィルタリングなしですべての生の型に一致する場合は UNFILTERED)
      導入:
      6.2.3
      関連事項:
    • orderedStream

      default StreamSE<T> orderedStream(PredicateSE<ClassSE<?>> customFilter)
      ファクトリの共通順序比較器に従って事前に順序付けされた、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされた StreamSE を返します。
      パラメーター:
      customFilter - 生の Bean 型マッチの中から Bean を選択するためのカスタム型フィルター (または、デフォルトのフィルタリングなしですべての生の型に一致する場合は UNFILTERED)
      導入:
      6.2.3
      関連事項:
    • stream

      default StreamSE<T> stream(PredicateSE<ClassSE<?>> customFilter, boolean includeNonSingletons)
      特定の順序保証なしで (通常は登録順で)、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされた StreamSE を返します。
      パラメーター:
      customFilter - 生の Bean 型マッチの中から Bean を選択するためのカスタム型フィルター (または、デフォルトのフィルタリングなしですべての生の型に一致する場合は UNFILTERED)
      includeNonSingletons - プロトタイプ Bean またはスコープ Bean も含めるか、シングルトンのみを含めるか (FactoryBeans にも適用)
      導入:
      6.2.5
      関連事項:
    • orderedStream

      default StreamSE<T> orderedStream(PredicateSE<ClassSE<?>> customFilter, boolean includeNonSingletons)
      ファクトリの共通順序比較器に従って事前に順序付けされた、一致するすべてのオブジェクトインスタンスに対してカスタムフィルターされた StreamSE を返します。
      パラメーター:
      customFilter - 生の Bean 型マッチの中から Bean を選択するためのカスタム型フィルター (または、デフォルトのフィルタリングなしですべての生の型に一致する場合は UNFILTERED)
      includeNonSingletons - プロトタイプ Bean またはスコープ Bean も含めるか、シングルトンのみを含めるか (FactoryBeans にも適用)
      導入:
      6.2.5
      関連事項: