springboot~ConditionalOnProperty注解的使用

打印 上一主题 下一主题

主题 852|帖子 852|积分 2556

@ConditionalOnProperty注释在类或者bean方法上进行控制这个bean对象是否被注册,它是否被注册,完成依赖于ConditionalOnProperty里的value的值,为true时,表示被注册,为false表示不注册这个bean。而我们通过matchIfMissing来配置这个value的缺省值,默认是false,即当你不配置时,它是不会自动装配的。
在组件中的使用

一 声明一个配置类
  1. @ConfigurationProperties("kc-kafka")
  2. @Data
  3. public class KafkaProperties {
  4.   /**
  5.    * 是否开启kafka功能.
  6.    */
  7.   private Boolean enabled = true;
  8.   /**
  9.    * kafka生产者ack机制
  10.    */
  11.   private String acks = "1";
复制代码
通过EnableConfigurationProperties开启配置类,而当前类是否被注册,依赖于kc-kafka.enabled的值,默认是装配这个bean

matchIfMissing=true表示默认在不配置kc-kafak时,它就会装配这个KafkaProviderConfig对象
  1. @Configuration
  2. @RequiredArgsConstructor
  3. @ConditionalOnProperty(value = "kc-kafka.enabled", matchIfMissing = true)
  4. @EnableConfigurationProperties(KafkaProperties.class)
  5. public class KafkaProviderConfig {
  6.   @Autowired
  7.   KafkaProperties kafkaProperties;
  8.   @Bean
  9.   @ConditionalOnBean(DefaultKafkaProducerFactory.class)
  10.   public KafkaTemplate<String, String> kafkaTemplate(DefaultKafkaProducerFactory<String, String> kafkaProducerFactory) {
  11.     return new KafkaTemplate<>(kafkaProducerFactory, false);
  12.   }
  13. }
复制代码
通过name和havingValue为控制bean的装配

上面的matchIfMissing只控制boolean类型的属性,如果你希望通过字符串属性来控制bean的装配,可以使用name和havingValue的组合。
  1. @Configuration
  2. @RequiredArgsConstructor
  3. @ConditionalOnProperty(name= "kc-kafka.status", havingValue="1")
  4. @EnableConfigurationProperties(KafkaProperties.class)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表