java - Spring Boot:使用 @ConfigurationProperties 从 yaml 读取不与 @Data 一起使用
问题描述
我正在尝试从 application.yml 中检索值。下面的最后一行将 kafkaConfig 显示为 null,并且无法读取。如何正确设置 Kafka 配置和代码,以从 json 文件中读取?我们使用 @Data 而不是 getter/setter。
KafkaConfig.java
@Configuration
@ConfigurationProperties("kafka")
@Data
public class KafkaConfig {
private String topic;
private String event;
}
应用程序.yml
kafka:
topic: "testTopic"
event: "testEvent"
KafkaProducerBeans.java
@Component
public class KafkaProducerBeans {
@Autowired
private KafkaConfig kafkaConfig;
public KafkaProducerBeans(KafkaConfig kafkaConfig) {
this.kafkaConfig = kafkaConfig;
}
@Bean(name = "kafkaTestClient")
public String getData() {
return kafkaConfig.getTopic(); // final line is creating null for kafka Config
}
资源:https ://codingnconcepts.com/spring-boot/spring-configuration-properties-using-yml/
解决方案
我认为将属性绑定到 pojos 的推荐方法是@EnableConfigurationProperties
像这样使用注释:
KafkaConfig.java
@ConfigurationProperties("kafka")
@Data
public class KafkaConfig {
private String topic;
private String event;
}
KafkaProducerBeans.java
@Component
@EnableConfigurationProperties(KafkaConfig.class)
public class KafkaProducerBeans {
private final KafkaConfig kafkaConfig;
@Autowired
public KafkaProducerBeans(KafkaConfig kafkaConfig) {
this.kafkaConfig = kafkaConfig;
}
// [...]
}
有关详细信息,请参阅官方 Spring 文档:
- https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config.typesafe-configuration-properties.java-bean-binding
- https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config.typesafe-configuration-properties.enabling-annotated-types
推荐阅读
- python - 中途拆分 PDF 页面并重新组合?
- html - 为什么我的 css 没有编辑我的 html 按钮高度?
- arrays - 带有集合数组的MongoDB 2集合
- elixir - 预加载和订购 has_many 时的不良行为:通过关联
- sql - 时间字段案例说明
- java - 解密未返回正确的明文
- java - Protobuf 生成的类中的 newBuilder() 是否会创建一个新的 Java 对象?
- arrays - 如何找到两个数组具有相同数字的位置?
- excel - Excel 宏:需要将数字转换为没有分隔符和数字四舍五入的文本
- bash - 在 UBUNTU 上编码 BASH curl 的 URL