gpt4 book ai didi

java - 绑定(bind) ConfigurationProperties 时出现 NullPointerException (Spring Boot)

转载 作者:行者123 更新时间:2023-12-02 11:31:30 26 4
gpt4 key购买 nike

我正在努力处理一些代码,但我不知道为什么......这是我的代码:

@SpringBootApplication
@EnableConfigurationProperties(WorkflowRootProperties.class)
@ComponentScan
@ActiveProfiles("test")
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}

还有我的属性 bean

@ConfigurationProperties("workflow")
public class WorkflowRootProperties {
private List<Datacenter> datacenter = new ArrayList<>();

public List<Datacenter> getDatacenter() {
return datacenter;
}

public void setDatacenter(List<Datacenter> datacenter) {
this.datacenter = datacenter;
}
}

引用另一个bean

public class EnvProperties {
public static class Datacenter {
private List<Env> env = new ArrayList<>();

public List<Env> getEnv() {
return env;
}

public void setEnv(List<Env> env) {
this.env = env;
}
}

public static class Env {
private List<Instance> instance = new ArrayList<>();

public List<Instance> getInstance() {
return instance;
}

public void setInstance(List<Instance> instance) {
this.instance = instance;
}
}

public static class Instance {
private String port;

public String getPort() {
return port;
}

public void setPort(String port) {
this.port= port;
}
}
}

最后,我的属性是

workflow.datacenter[1].env[1].instance[1].port=8080
workflow.datacenter[2].env[1].instance[1].port=8082
workflow.datacenter[1].env[1].instance[2].port=8080

我的错误发生在 init 处,我收到一个我无法理解的 NPE。

java.lang.IllegalStateException: Failed to load ApplicationContext...

Caused by: org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'workflow.datacenter' to java.util.List at org.springframework.boot.context.properties.bind.Binder.handleBindError(Binder.java:250) at org.springframework.boot.context.properties.bind.Binder.bind(Binder.java:226) at org.springframework.boot.context.properties.bind.Binder.lambda$bindBean$4(Binder.java:331) at org.springframework.boot.context.properties.bind.JavaBeanBinder.bind(JavaBeanBinder.java:72) at org.springframework.boot.context.properties.bind.JavaBeanBinder.bind(JavaBeanBinder.java:61) at org.springframework.boot.context.properties.bind.JavaBeanBinder.bind(JavaBeanBinder.java:53)...

Caused by: java.lang.NullPointerException: null at java.util.TreeMap.compare(TreeMap.java:1294) at java.util.TreeMap.put(TreeMap.java:538) at java.util.TreeSet.add(TreeSet.java:255) at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169) at java.util.LinkedList$LLSpliterator.forEachRemaining(LinkedList.java:1235) at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:270) at java.util.Iterator.forEachRemaining(Iterator.java:116) at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) at org.springframework.boot.context.properties.bind.IndexedElementsBinder.assertNoUnboundChildren(IndexedElementsBinder.java:137)...

你能帮我一下吗?

最佳答案

如果从 0 开始索引似乎可以工作:

workflow.datacenter[0].env[0].instance[0].port=8080
workflow.datacenter[1].env[0].instance[0].port=8082
workflow.datacenter[0].env[0].instance[1].port=8080

关于java - 绑定(bind) ConfigurationProperties 时出现 NullPointerException (Spring Boot),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49263312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com