@ConditionalOnProperty注釋在類或者bean方法上進行控制這個bean物件是否被注冊,它是否被注冊,完成依賴于ConditionalOnProperty里的value的值,為true時,表示被注冊,為false表示不注冊這個bean,而我們通過matchIfMissing來配置這個value的預設值,默認是false,即當你不配置時,它是不會自動裝配的,
在組件中的使用
一 宣告一個配置類
@ConfigurationProperties("kc-kafka")
@Data
public 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 = "https://www.cnblogs.com/lori/p/kc-kafka.enabled", matchIfMissing = true)
@EnableConfigurationProperties(KafkaProperties.class)
public class KafkaProviderConfig {
@Autowired
KafkaProperties kafkaProperties;
@Bean
@ConditionalOnBean(DefaultKafkaProducerFactory.class)
public KafkaTemplate<String, String> kafkaTemplate(DefaultKafkaProducerFactory<String, String> kafkaProducerFactory) {
return new KafkaTemplate<>(kafkaProducerFactory, false);
}
}
通過name和havingValue為控制bean的裝配
上面的matchIfMissing只控制boolean型別的屬性,如果你希望通過字串屬性來控制bean的裝配,可以使用name和havingValue的組合,
@Configuration
@RequiredArgsConstructor
@ConditionalOnProperty(name= "kc-kafka.status", havingValue="https://www.cnblogs.com/lori/p/1")
@EnableConfigurationProperties(KafkaProperties.class)
作者:倉儲大叔,張占嶺,
榮譽:微軟MVP
QQ:853066980
支付寶掃一掃,為大叔打賞!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/546290.html
標籤:Java
