gpt4 book ai didi

java - 需要帮助弄清楚如何在 spring boot java app 中从 yml 加载嵌套列表

转载 作者:搜寻专家 更新时间:2023-10-31 19:44:52 25 4
gpt4 key购买 nike

我有一个像这样的 yaml 文件设置:

system:
locators:
- first.com
- 103
- 105
- second.com
- 105

我想将其加载为看起来像这样的 @autowired 配置:

@Autowired
List<Locator> locators;

我认为 Locator 类看起来像这样:

class Locator {
String name;
List<String> ports;
}

但我不确定如何将它们组合在一起。感谢您的帮助!

最佳答案

首先,我认为您的 yaml 文件结构无效。在您的 Locator 类中,您已为字段命名 - 您应该在 yaml 文件中执行相同的操作。最后它应该是这样的:

system:
locators:
- name: first.com
ports:
- 103
- 105
- name: second.com
ports:
- 105

其次,您可以利用 Spring Boot 相当高级的属性到 bean 自动映射。与在每个 Spring Boot 应用程序中一样,您需要使用 @SpringBootApplication 注释您的主类。然后,您可以创建一个代表您的属性结构的类:

@Configuration
@ConfigurationProperties(prefix = "system")
public class SystemProperties {

private List<Locator> locators;

public List<Locator> getLocators() {
return locators;
}

public void setLocators(List<Locator> locators) {
this.locators = locators;
}

public static class Locator {
private String name;
private List<String> ports;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public List<String> getPorts() {
return ports;
}

public void setPorts(List<String> ports) {
this.ports = ports;
}

}

}

注意定义前缀的@ConfigurationProperties 注释,该前缀是此类映射配置的根。它当然可以是 yaml 属性树中的任何节点,不一定像您的情况那样是主级别。

为了进一步阅读,我建议这个 blog postofficial documentation因为在属性 bean 映射方面有更强大的功能。

关于java - 需要帮助弄清楚如何在 spring boot java app 中从 yml 加载嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33699171/

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