
请问这种类型的配置怎么读取?目前来讲我用一个实体类来接收

但是里面的属性读取不到读取不到配置,debug的时候看到为空

请问这种类型的配置怎么读取?目前来讲我用一个实体类来接收

但是里面的属性读取不到读取不到配置,debug的时候看到为空
关注引自免费微信小程序:皆我百晓生
在Spring Boot中,读取YAML配置文件中多组相同的配置时,通常会使用@ConfigurationProperties注解结合一个Java类来绑定这些配置。假设你有一个如下的YAML配置:
servers:
- name: server1
url: http://server1.example.com
port: 8080
- name: server2
url: http://server2.example.com
port: 8081
首先,创建一个Java类来映射这组配置:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@ConfigurationProperties(prefix = "servers")
public class ServerConfigList {
private List<ServerConfig> list;
public List<ServerConfig> getList() {
return list;
}
public void setList(List<ServerConfig> list) {
this.list = list;
}
public static class ServerConfig {
private String name;
private String url;
private int port;
// getters and setters for each field
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
}
}
现在,Spring Boot会自动将YAML配置中的servers部分与ServerConfigList类进行绑定。你可以在需要的地方注入并使用这个类:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class SomeService {
@Autowired
private ServerConfigList serverConfigList;
public void processServers() {
for (ServerConfig server : serverConfigList.getList()) {
System.out.println("Server Name: " + server.getName());
System.out.println("Server URL: " + server.getUrl());
System.out.println("Server Port: " + server.getPort());
}
}
}
这样,你就可以正确地从YAML配置文件中读取到多组相同类型的配置了。如果你发现调试时属性为空,请确保你的配置文件名称符合Spring Boot的默认规则(application.yml或application.yaml),并且该文件位于正确的资源路径下,并已被Spring Boot扫描加载。如果问题依旧存在,请检查项目依赖是否完整以及是否有其他可能影响配置加载的因素。