アノテーションインターフェース 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
  • オプション要素のサマリー

    オプション要素
    修飾子と型
    オプションの要素
    説明
    存在しなければならないクラス名。
    ClassSE<?>[]
    存在しなければならないクラス。
  • 要素の詳細

    • value

      ClassSE<?>[] value
      存在しなければならないクラス。このアノテーションはクラスのバイトコードをロードすることで解析されるため、このアノテーションが影響を受けるコンポーネントに直接あり、このアノテーションが構成されたメタアノテーションとして使用されている場合にのみ、最終的にクラスパスにないクラスをここで指定しても安全です。このアノテーションをメタアノテーションとして使用するには、name() 属性のみを使用します。
      戻り値:
      存在しなければならないクラス
      デフォルト:
      {}
    • name

      StringSE[] name
      存在しなければならないクラス名。
      戻り値:
      存在しなければならないクラス名。
      デフォルト:
      {}