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

在组件中的使用一 声明一个配置类

@ConfigurationProperties("kc-kafka")@Datapublic class KafkaProperties {  /**   * 是否开启kafka功能.   */  private Boolean enabled = true;  /**   * kafka生产者ack机制   */  private String acks = "1";

通过EnableConfigurationProperties开启配置类,而当前类是否被注册,依赖于kc-kafka.enabled的值,默认是装配这个bean

matchIfMissing=true表示默认在不配置kc-kafak时,它就会装配这个KafkaProviderConfig对象

@Configuration@RequiredArgsConstructor@ConditionalOnProperty(value = "kc-kafka.enabled", matchIfMissing = true)@EnableConfigurationProperties(KafkaProperties.class)public class KafkaProviderConfig {  @Autowired  KafkaProperties kafkaProperties;  @Bean  @ConditionalOnBean(DefaultKafkaProducerFactory.class)  public KafkaTemplate kafkaTemplate(DefaultKafkaProducerFactory kafkaProducerFactory) {    return new KafkaTemplate(kafkaProducerFactory, false);  }}

通过name和havingValue为控制bean的装配

上面的matchIfMissing只控制boolean类型的属性,如果你希望通过字符串属性来控制bean的装配,可以使用name和havingValue的组合。

@Configuration@RequiredArgsConstructor@ConditionalOnProperty(name= "kc-kafka.status", havingValue="1")@EnableConfigurationProperties(KafkaProperties.class)

作者:仓储大叔,张占岭,
荣誉:微软MVP
QQ:853066980

支付宝扫一扫,为大叔打赏!