[英]spring boot properties yaml
我使用自動配置(僅通過注釋)運行spring boot和kafka,並在.yaml文件中定義了道具,即:
spring:
kafka:
bootstrap-servers: someserver:9999
consumer:
group-id: mygroup
....
@KafkaListener()
public void receive(ConsumerRecord<?, ?> consumerRecord) {
....
}
它可以正常工作,彈簧圖,即正確的字段組ID。
但是當我嘗試使用相同的yaml文件手動配置kafka(與ConsumerFactory和ConsumerConfig一起使用)時,我遇到了問題。 在類ConsumerConfig中,kafka屬性以命名。 名稱上,而不是_即:
public static final String GROUP_ID_CONFIG = "group.id";
所以我不能只將它們加載到map中,然后將map傳遞給ConsumerFactory,因為鍵使用_ not。
我不想像spring kafka團隊提供的示例中那樣丑陋,當他們將yaml中的props映射到config類,然后在map中手動分配props傳遞給工廠時:
@ConfigurationProperties(prefix = "kafka")
public class ConfigProperties {
private String brokerAddress;
private String topic;
private String fooTopic;
public String getBrokerAddress() {
return this.brokerAddress;
}
.....
@Bean
public ProducerFactory<String, String> producerFactory() {
Map<String, Object> props = new HashMap<>();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, this.configProperties.getBrokerAddress());
.....
return new DefaultKafkaProducerFactory<>(props);
}
如果要使用yml文件中的虛線屬性,則需要像boot那樣對不直接作為啟動屬性支持的任意屬性進行啟動:
spring:
kafka:
consumer:
properties:
group.id: foo
即填充Properties
屬性。
引導為某些屬性提供一流的支持的原因是,IDE編輯器可以提供內容輔助,而任意屬性是不可能的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.