【问题标题】:Spring Boot YAML config and listSpring Boot YAML 配置和列表
【发布时间】:2016-01-17 15:17:23
【问题描述】:

我必须在 Spring Boot 的 YAML 配置文件中集成一个列表,但不知道如何继续。

我已经看到了其他相关的问题:Spring Boot yaml configuration for a list of strings

也有同样的问题。

我应用了解决方案并解决了问题,发现解决方案有点棘手。

有没有办法让列表与 @Value 一起使用?

如果不是现在,将来会不会?

非常感谢。

【问题讨论】:

  • 属性文件格式会比 YAML 简单吗?
  • 看来这个问题在 Spring 还没有修复,也没有计划去做:github.com/spring-projects/spring-framework/pull/747
  • 太糟糕了,因为让它工作的方法非常棘手。也许我会将我的列表设为带逗号的字符串,即使我认为这不是一个好方法:/

标签: java spring spring-boot yaml


【解决方案1】:
https://www.youtube.com/watch?v=d6Scea1JdMg&t=9s

请参考以上链接。也许它有帮助,展示了如何在 Spring Boot 中读取 application.yml 中的不同数据类型。

【讨论】:

    【解决方案2】:

    根据本文档,您可以在 yaml 中创建一个列表。 http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-yaml

    YAML 列表表示为带有 [index] 解引用器的属性键,例如这个 YAML:

    my:
       servers:
           - dev.bar.com
           - foo.bar.com
    

    将转化为这些属性:

    my.servers[0]=dev.bar.com
    my.servers[1]=foo.bar.com
    

    要使用 Spring DataBinder 实用程序(这是 @ConfigurationProperties 所做的)绑定到类似的属性,您需要在目标 bean 中具有 java.util.List(或 Set)类型的属性,并且您需要提供setter,或用可变值初始化它,例如这将绑定到上面的属性

    @ConfigurationProperties(prefix="my")
    public class Config {
    
        private List<String> servers = new ArrayList<String>();
    
        public List<String> getServers() {
            return this.servers;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-29
      • 2019-10-15
      • 1970-01-01
      • 2015-05-31
      • 1970-01-01
      • 1970-01-01
      • 2020-05-07
      • 2021-06-10
      相关资源
      最近更新 更多