Java 在弹簧靴中使用yaml
我已经编写了一个restful web服务,帖子生成了一条Kafka消息,Get使用Kafka主题。我硬编码了允许我连接卡夫卡的属性。我想将其移动到src/main/resources中的yaml文件中Java 在弹簧靴中使用yaml,java,spring,spring-boot,yaml,Java,Spring,Spring Boot,Yaml,我已经编写了一个restful web服务,帖子生成了一条Kafka消息,Get使用Kafka主题。我硬编码了允许我连接卡夫卡的属性。我想将其移动到src/main/resources中的yaml文件中 producer: bootstrap.servers: "localhost:9092" acks: "all" retries: 0 batch.size: 16384 linger.ms: 1 buffer.memory: 33554432 key.serial
producer:
bootstrap.servers: "localhost:9092"
acks: "all"
retries: 0
batch.size: 16384
linger.ms: 1
buffer.memory: 33554432
key.serializer: "org.apache.kafka.common.serialization.StringSerializer"
value.serializer: "org.apache.kafka.common.serialization.StringSerializer"
然后我尝试在我的卡夫卡制作人代码中得到这个
@Service
public class SonicRestKafkaProducer {
@Value("${producer.bootstrap.servers}")
String bootStrapServers;
public void buildProducer() {
Properties props = new Properties();
if (bootStrapServers == null) {System.out.println("bootStrapServers is null");}
props.put("bootstrap.servers", bootStrapServers);
这将导致一个空指针
bootStrapServers is null
2016-02-15 17:09:14.941 ERROR 10846 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException: null
at java.util.Hashtable.put(Hashtable.java:459) ~[na:1.8.0_31]
at com.sonicdrivein.bdp.kafka.restproxy.kafka.api.SonicRestKafkaProducer.buildProducer(SonicRestKafkaProducer.java:59) ~[kafka-rest-proxy-0.1.0.jar!/:0.1.0]
我尝试创建一个单独的类。我觉得这很简单,但我在文档或此处没有看到任何解释。1)请分享加载您的
yaml
文件的代码。2) 谁在调用您的buildProducer()
方法,以及在哪里。。。请注意,自动连接/注入发生在对象实例化之后(出于明显的原因),因此在构造函数中的使用可能会有问题……我建议使用@AndyWilkinson,而不是使用@Value
,我尝试过@ConfigurationProperties(prefix=“producer”)公共类SonicRestKafkaProducer{@Value(${bootstrap.servers}")字符串bootstrapserver;
并且我仍然得到空值pointer@Morfic我不是在编写代码来加载yaml。我假设spring boot为我加载了它。我可能错了。该类当前是作为单例编写的。我不想这样做。buildProducer创建了一个kafka producer。如果有错误,我将关闭kafka producercer并清空类变量。每当使用该变量与kafka对话时,我都会检查它是否为null,然后调用buildProducer创建一个新的。kafka建议使用一个producer。@Morfic作为单例,我的构造函数是私有的。我想知道这是否是一个问题。