この記事では、SpringBoot の @Conditional アノテーションとは何ですか?使い方?困っている友人は参考にしていただければ幸いです。
@Conditional アノテーションの一部の機能は最近のプロジェクトで使用されているため、記録するためにこの記事を書きました
@Conditional アノテーションとは何ですか? たとえば、インターフェースに 2 つの実装クラスがある場合、通常はインターフェースを管理のみに渡します。実装クラスの 1 つが選択されて実装されます。現時点では if-else を使用できないため、@Conditional アノテーションが表示されます。
SpringBoot では、@Conditional アノテーションは単独ではなく、ファミリーです。そのメンバーのいくつかとその使用方法を見てみましょう。
@ ConditionalOnBean
サンプルコード
@Bean @ConditionalOnBean(RedisConnectionFactory.class) public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>(); template.setConnectionFactory(connectionFactory); template.setKeySerializer(new StringRedisSerializer()); template.afterPropertiesSet(); return template; }
このメソッドには @ConditionalOnBean アノテーションが追加されており、アノテーション内の属性は RedisConnectionFactory です。これが意味するのは、redis の関連する構成情報を構成すると、操作できるように RedisTemplate をインスタンス化します。redis の関連する構成を構成しない場合は、(結局のところ、たとえ存在していても) インスタンス化しないということです。設定がない場合、インスタンス化はエラーを報告します)
それだけでなく、次のようにプレイすることもできます:
Bean の名前に従って @ConditionalOnMissingBean(name = “connectionFactory”) または @ConditionalOnMissingBean (annotation = EnableSyjRateLimit.class)、アノテーションなどに基づいてさまざまな操作を実行できます。
@ConditionalOnMissingBean
これは、Missing が 1 よりも 1 つ多いだけです。これは何を意味しますか。 ? 名前が示すように、特定の Bean が存在しない場合にインスタンス化されます。
@ConditionalOnClass (特定のクラスが存在する場合にのみ Bean がインスタンス化されます)
@ConditionalOnMissingClass (特定のクラスが存在しない場合、Bean はインスタンス化されます)そうして初めて Bean がインスタンス化されます)
@ConditionalOnProperty(prefix = “syj”, name = “algorithm”, gettingValue = “token”)
これは少し複雑ですこれが意味するのは、構成ファイル内に syj というプレフィックスが付いた属性があり、その属性名が Algorithm であり、その値が Token である場合、クラスがインスタンス化されるということです。
そして、これにはより優れた属性もあります
@ConditionalOnProperty(prefix = “syj”, name = “algorithm”, gettingValue = “counter”, matchIfMissing = true)
matchIfMissing とはどういう意味ですか?つまり、すべてが満たされていない場合は、属性 syj.algorithm が counter
@ConditionalOnJava (Java の場合) に等しいかどうかに関係なく、デフォルトで実装されます。 application)
@ConditionalOnWebApplication (Web アプリケーションの場合)
実際、@Conditional ファミリのメンバーに関しては、まだほんの一部しか説明していません。
子供用の靴について詳しく知りたい場合は、このパッケージを参照してください。
org.springframework.boot.autoconfigure.condition
public class MyCondition implements Condition { public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { //在这里写你的逻辑,比如说你想a>0时实例化类A,a<0时不实现 return a>0; } }その後、それを使用できるようになります
@Bean @Conditional(MyCondition.class) public A a(){ return new A() }
以上がSpringBoot の @Conditional アノテーションとは何ですか?使い方?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。