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 |