SpringBootシリーズ@Conditional使用上の注意はじめに

SpringBootシリーズ@Conditional使用上の注意はじめに

:春の公式声明は、文書が@Conditionalノートについて教えて引用されSpring5.0.15バージョン@Conditional公式文書注釈

@Conditionalは、指定された条件のすべてが一致した場合、コンポーネントは、登録の資格を得るためにのみ発現しました。
@Conditional注釈は、次のいずれかの方法で使用することができます:

  • 任意@Beanメソッドレベルのコメントの方法として
  • クラス@Configuration含めた直接または間接的なタイプのレベルの注釈の注釈@Componentのいずれかのタイプについては、
  • メタアノテーションとして、カスタムオブジェクトは、一体構造の型注釈であります

試合によって一つの主要なソースの変更注釈、試合、唯一の資格の春は、コンテナにロードされました

@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
    if (context.getEnvironment() != null) {
        // Read the @Profile annotation attributes
        MultiValueMap<String, Object> attrs = metadata.getAllAnnotationAttributes(Profile.class.getName());
        if (attrs != null) {
            for (Object value : attrs.get("value")) {
                if (context.getEnvironment().acceptsProfiles(((String[]) value))) {
                    return true;
                }
            }
            return false;
        }
    }
    return true;
}

役割:すべてのすべてで、唯一@Conditional指定された条件が満たされ、唯一のコンテナは、コンポーネントを追加します

@Conditionalは、Notesを派生:@Conditionalは多くのコメントを導き出す、次の表には、使用の導出についてのコメントを与えます

@Conditional派生コメント アクションは、(両方が指定された条件の遵守を決定するために)
@ConditionalOnJava 要件を満たすためにシステムのJavaバージョン
@ConditionalOnBean 指定されたビーンクラスがあります。
@ConditionalOnMissingBean 指定なしBeanクラス
@ConditionalOnExpression ミート指定された式SPEL
@ConditionalOnClass 指定されたクラスを持っています
@ConditionalOnMissingClass 指定されていないクラス
@ConditionalOnSingleCandidate 唯一のコンテナは、Beanを指定し、またはBeanは、選択したBeanです
@ConditionalOnProperty プロパティは、指定された属性の値を指定しています
@ConditionalOnResource 指定されたリソースパスの存在
@ConditionalOnWebApplication システム環境は、Web環境であります
@ConditionalOnNotWebApplication システム環境は、Web環境ではありません
@ConditionalOnjndi 指定された項目そのJNDI

おすすめ

転載: www.cnblogs.com/mzq123/p/11874128.html