使用 Spring 引导中的自定义"root key"映射 application.yml 中的对象列表



我已经为Spring Boot应用程序设置了以下配置类:

@Configuration
@ConfigurationProperties(prefix = "tasks")
@Getter
@Setter
public class TaskConfiguration {

private List<TaskEntry> tasks;
@Getter
@Setter
public static class TaskEntry {
private String name;
private String url;
private String cronExpression;
}
}

application.yml定义了以下可以在应用程序中正确读取的值:

tasks:
tasks:
- name: A
url: http://localhosta
cronExpression: 1 2 3 4 5 A
- name: B
url: http://localhostb
cronExpression: 1 2 3 4 5 B

但是,您可能已经注意到配置文件中有一个重复的tasks密钥。我还没有找到如何摆脱它,使YAML看起来像这样:

tasks:
- name: A
url: http://localhosta
cronExpression: 1 2 3 4 5 A
- name: B
url: http://localhostb
cronExpression: 1 2 3 4 5 B

ConfigurationPropertiesprefix属性的前缀是有效的绑定到这个对象,在你的情况下,这意味着任务将是你所有的配置类属性的前缀,包括任务属性出现在你的应用程序中。yml文件。为了避免这种情况,您可以使用@ConfigurationProperties而不是@ConfigurationProperties(prefix = "tasks")

最新更新