アノテーションインターフェース ConditionalOnMissingBean


@TargetSE({TYPESE,METHODSE}) @RetentionSE(RUNTIMESE) @DocumentedSE @Conditional(org.springframework.boot.autoconfigure.condition.OnBeanCondition.class) public @interface ConditionalOnMissingBean
指定された要件を満たす Bean が BeanFactory にすでに含まれていない場合にのみ一致する @Conditional。条件が一致するためには、どの要件も満たす必要はありません。同じ Bean が要件を満たす必要はありません。

@Bean メソッドに配置され、value()type()name()、または annotation() のいずれも指定されていない場合、一致する Bean 型はデフォルトで @Bean メソッドの戻り値の型になります。

@Configuration
public class MyAutoConfiguration {

    @ConditionalOnMissingBean
    @Bean
    public MyService myService() {
        ...
    }

}

上記のサンプルでは、型 MyService の Bean が BeanFactory にすでに含まれていない場合に条件が一致します。

この条件は、これまでにアプリケーションコンテキストによって処理された Bean 定義にのみ一致するため、自動構成クラスでのみこの条件を使用することを強くお勧めします。候補 Bean が別の自動構成によって作成される可能性がある場合、この条件を使用するものが実行されることを確認してください。

導入:
1.0.0
作成者:
Phillip Webb, Andy Wilkinson
  • オプション要素の概要

    オプション要素
    修飾子と型
    オプションの要素
    説明
    ClassSE<? extends AnnotationSE>[]
    チェックする必要のある Bean を修飾するアノテーション型。
    ClassSE<?>[]
    一致する Bean を識別するときに無視する必要がある Bean のクラス型。
    一致する Bean を識別するときに無視する必要のある Bean のクラス型名。
    チェックする Bean の名前。
    ClassSE<?>[]
    指定された Bean 型をジェネリクスパラメーター内に含む可能性がある追加のクラス。
    アプリケーションコンテキスト階層(親コンテキスト)を考慮するかどうかを決定する戦略。
    チェックする Bean のクラス型名。
    ClassSE<?>[]
    チェックする Bean のクラス型。
  • 要素の詳細

    • value

      ClassSE<?>[] value
      チェックする Bean のクラス型。指定された各クラスの Bean が BeanFactory に含まれていない場合、条件は一致します。オートワイヤー候補ではない Bean やデフォルトの候補ではない Bean は無視されます。

      このアノテーションはクラスバイトコードをロードすることで解析されるため、最終的にクラスパス上に存在しない可能性のあるクラスを指定しても安全です。ただし、このアノテーションが影響を受けるコンポーネントに直接指定されている場合に限ります。このアノテーションが合成されたメタアノテーションとして使用されている場合は、このアノテーションは適用されません。このアノテーションをメタアノテーションとして使用するには、type() 属性のみを使用してください。

      戻り値:
      チェックする Bean のクラス型
      関連事項:
      デフォルト:
      {}
    • type

      StringSE[] type
      チェックする Bean のクラス型名。指定された各クラスの Bean が BeanFactory に含まれていない場合、条件は一致します。オートワイヤー候補ではない Bean やデフォルトの候補ではない Bean は無視されます。
      戻り値:
      チェックする Bean のクラス型名
      関連事項:
      デフォルト:
      {}
    • ignored

      ClassSE<?>[] ignored
      一致する Bean を識別するときに無視する必要がある Bean のクラス型。

      このアノテーションはクラスバイトコードをロードすることで解析されるため、最終的にクラスパス上に存在しない可能性のあるクラスを指定しても安全です。ただし、このアノテーションが影響を受けるコンポーネントに直接指定されている場合に限ります。このアノテーションが合成されたメタアノテーションとして使用されている場合は、このアノテーションは適用されません。このアノテーションをメタアノテーションとして使用するには、ignoredType() 属性のみを使用してください。

      戻り値:
      無視する Bean のクラス型
      導入:
      1.2.5
      デフォルト:
      {}
    • ignoredType

      StringSE[] ignoredType
      一致する Bean を識別するときに無視する必要のある Bean のクラス型名。
      戻り値:
      無視する Bean のクラス型名
      導入:
      1.2.5
      デフォルト:
      {}
    • annotation

      ClassSE<? extends AnnotationSE>[] annotation
      チェックする必要がある Bean を装飾するアノテーション型。指定された各アノテーションが BeanFactory 内のすべての Bean に存在しない場合に条件が一致します。オートワイヤ候補ではない Bean やデフォルト候補ではない Bean は無視されます。

      Since this annotation is parsed by loading class bytecode, it is safe to specify classes here that may ultimately not be on the classpath, but only if this annotation is directly on the affected component and not if this annotation is used as a composed, meta-annotation.

      戻り値:
      チェックするクラスレベルのアノテーション型
      関連事項:
      デフォルト:
      {}
    • name

      StringSE[] name
      チェックする Bean の名前。指定された各 Bean 名が BeanFactory にない場合、条件は一致します。
      戻り値:
      チェックする Bean の名前
      デフォルト:
      {}
    • search

      アプリケーションコンテキスト階層(親コンテキスト)を考慮するかどうかを決定する戦略。
      戻り値:
      検索戦略
      デフォルト:
      ALL
    • parameterizedContainer

      ClassSE<?>[] parameterizedContainer
      指定された Bean 型をジェネリクスパラメーター内に含む可能性がある追加のクラス。例: value=Name.class および parameterizedContainer=NameRegistration.class を宣言するアノテーションは、Name および NameRegistration<Name> の両方を検出します。

      Since this annotation is parsed by loading class bytecode, it is safe to specify classes here that may ultimately not be on the classpath, but only if this annotation is directly on the affected component and not if this annotation is used as a composed, meta-annotation.

      戻り値:
      コンテナー型
      導入:
      2.1.0
      デフォルト:
      {}