使用 Spring Boot 中的自定义“根键”映射来自 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
勇敢地

is是有效绑定到此对象的属性的前缀,在您的情况下,这意味着tasks将是您所有配置类属性的前缀,包括出现在 application.yml 文件中tasks属性。为避免这种情况,您可以使用代替ConfigurationProperties prefix@ConfigurationProperties@ConfigurationProperties(prefix = "tasks")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将yml中的列表映射到Scala中的对象列表(Spring Boot)

Spring Boot-无法从application.yml中读取自定义属性

Spring Boot 從 application.yml 注入地圖列表

无法从Java Spring Boot项目中的application.yml文件读取用户定义的类的列表

使用application.yml在Spring Boot中配置嵌入式Tomcat的日志记录

使用apache-cxf在spring boot 2应用程序中未加载application.yml

Spring Boot-从application.yml注入映射

Spring Boot-如何通过实现BeforeAllCallback的自定义扩展类设置或覆盖application.yml中定义的属性?

在spring-boot中从application.yml文件获取cron

Spring Boot application.yml中的环境变量

如何在Spring Boot的application.yml中配置cassandra?

Spring Boot-忽略.jar文件中的application.yml / bootstrap.yml

Spring Boot-如何将application.yml属性定义为application.properties

如何将映射从application.yml注入到Spring Boot的字段中?

防止 Spring Boot 从 application.yml 中的点分隔键创建嵌套映射?

如何在Spring Boot的application.yml中配置mybatis映射器xml文件

其他属性中的spring application.yml参考列表

在spring-boot里面--application.yml-如何使用特殊字符

无法在 Spring Boot 中使用 @Value 从 application.yml 读取属性

Spring Boot的application.yml和application.properties

Spring Boot - 如何从多个自定义 yml 读取属性

Spring Boot:如何使用多个yml文件

spring.boot-starter-data-mongodb-reactive设置来自application.yml的密钥库密码,用于使用X509连接

Spring Boot - 使用自定义对象数组 JSON 序列化自定义对象

Spring Boot 2.4.2外部application.yml无法在Docker容器中读取

无法从JUnit Test加载'application.yml'中的Spring Boot属性

将Gradle属性注入Spring Boot application.yml,在IntelliJ IDEA中不起作用

在Spring Boot application.properties/.yml中基于OS设置日志文件位置

Spring Boot 2 忽略在 application.yml 中设置的 HikariCP 属性