アノテーションインターフェース ConditionalOnClass
@TargetSE({TYPESE,METHODSE})
@RetentionSE(RUNTIMESE)
@DocumentedSE
@Conditional(org.springframework.boot.autoconfigure.condition.OnClassCondition.class)
public @interface ConditionalOnClass
指定されたクラスがクラスパス上にある場合にのみ一致する
@Conditional
。Class
value
は、クラスがロードされる前に ASM を使用してアノテーションメタデータが解析されるため、@Configuration
クラスで安全に指定できます。クラス参照を使用できない場合は、name
String
属性を使用できます。
注意 : @Bean
メソッドで @ConditionalOnClass
を使用する場合は、特に注意が必要です。通常、戻り値の型が条件のターゲットになります。メソッドの条件が適用される前に、JVM はクラスをロードし、クラスが存在しない場合に失敗するメソッド参照を処理する可能性があります。このシナリオを処理するには、個別の @Configuration
クラスを使用して状態を分離する必要があります。例:
@AutoConfiguration public class MyAutoConfiguration { @Configuration(proxyBeanMethods = false) @ConditionalOnClass(SomeService.class) public static class SomeServiceConfiguration { @Bean @ConditionalOnMissingBean public SomeService someService() { return new SomeService(); } } }
- 導入:
- 1.0.0
- 作成者:
- Phillip Webb
オプション要素のサマリー
要素の詳細
value
ClassSE<?>[] value存在しなければならないクラス。このアノテーションはクラスのバイトコードをロードすることで解析されるため、このアノテーションが影響を受けるコンポーネントに直接あり、このアノテーションが構成されたメタアノテーションとして使用されている場合にのみ、最終的にクラスパスにないクラスをここで指定しても安全です。このアノテーションをメタアノテーションとして使用するには、name()
属性のみを使用します。- 戻り値:
- 存在しなければならないクラス
- デフォルト:
- {}
name
StringSE[] name存在しなければならないクラス名。- 戻り値:
- 存在しなければならないクラス名。
- デフォルト:
- {}