@TargetSE(valueSE={TYPESE,METHODSE}) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE @Conditional(value=org.springframework.boot.autoconfigure.condition.OnBeanCondition.class) public @interface ConditionalOnBean
BeanFactory
に含まれている場合にのみ一致する @Conditional
。条件が一致するためには、すべての要件が満たされている必要がありますが、同じ Bean で満たされている必要はありません。@Bean
メソッドに配置すると、Bean クラスはデフォルトでファクトリメソッドの戻り値の型になります。
@Configuration public class MyAutoConfiguration { @ConditionalOnBean @Bean public MyService myService() { ... } }
上記のサンプルでは、型 MyService
の Bean がすでに BeanFactory
に含まれている場合、条件は一致します。
この条件は、これまでにアプリケーションコンテキストによって処理された Bean 定義にのみ一致するため、自動構成クラスでのみこの条件を使用することを強くお勧めします。候補 Bean が別の自動構成によって作成される可能性がある場合、この条件を使用するものが実行されることを確認してください。
修飾子と型 | オプションの要素と説明 |
---|---|
ClassSE<? extends AnnotationSE>[] | annotation チェックする必要のある Bean を修飾するアノテーション型。 |
StringSE[] | name チェックする Bean の名前。 |
ClassSE<?>[] | parameterizedContainer 指定された Bean 型をジェネリクスパラメーター内に含む可能性がある追加のクラス。 |
SearchStrategy | search アプリケーションコンテキスト階層(親コンテキスト)を考慮するかどうかを決定する戦略。 |
StringSE[] | type チェックする Bean のクラス型名。 |
ClassSE<?>[] | value チェックする Bean のクラス型。 |
public abstract ClassSE<?>[] value
BeanFactory
に含まれている場合、条件は一致します。public abstract StringSE[] type
BeanFactory
に含まれている場合、条件は一致します。public abstract ClassSE<? extends AnnotationSE>[] annotation
BeanFactory
の Bean で定義されている場合、条件は一致します。public abstract StringSE[] name
BeanFactory
に含まれている場合、条件は一致します。public abstract SearchStrategy search
public abstract ClassSE<?>[] parameterizedContainer
value=Name.class
および parameterizedContainer=NameRegistration.class
を宣言するアノテーションは、Name
および NameRegistration<Name>
の両方を検出します。