使用 Spring-Boot 2.1 从 .yml 读取对象列表 [重复]

Posted

技术标签:

【中文标题】使用 Spring-Boot 2.1 从 .yml 读取对象列表 [重复]【英文标题】:read list of objects from .yml with Spring-Boot 2.1 [duplicate] 【发布时间】:2019-08-21 23:40:48 【问题描述】:

我需要创建 @ConfigurationProperties 来读取包含复杂对象列表的 .yml 文件。

Spring-Boot 似乎遇到了一些问题,所以我一步一步尝试先加载字符串列表:

.yml:

qwer: asdf
strings:
    - Apple
    - Orange
    - Strawberry
    - Mango

配置类:

@Component
@PropertySource(value = "tsp_client.yaml", "file:tsp_client.yaml", ignoreResourceNotFound = true)
@ConfigurationProperties
public class TSPClientConfig 
    public String qwer;

    public List<String> strings;

    public String getQwer() 
        return qwer;
    

    public void setQwer(String qwer) 
        this.qwer = qwer;
    

    public List<String> getStrings() 
        return strings;
    

    public void setStrings(List<String> strings) 
        this.strings = strings;
    

有了这个,我仍然得到大小为 0 的列表。qewr 属性映射很好。 字符串上的缩进应该没问题,因为我是从 here 复制的。

那么,你能告诉我是 spring 对此有一些问题还是我在这里做错了什么?最终我需要在列表中有复杂的对象。

Spring-Boot:2.1.2.RELEASE

【问题讨论】:

什么重复?然后链接解决方案 复杂对象的映射在哪里? 【参考方案1】:

显然杰克逊也有一个 yaml 阅读器: https://dzone.com/articles/read-yaml-in-java-with-jackson

如果它没有列表设置器,你可以这样做

setStrings(String[] ar)
this.strings=Arrays.asList(ar);

【讨论】:

拍的不错,但也不好用

以上是关于使用 Spring-Boot 2.1 从 .yml 读取对象列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA 2017版 spring-boot2.0.4的yml配置使用

spring-boot结合maven配置不同环境的profile

spring-boot 速成(10) -个人邮箱/企业邮箱发送邮件

spring-boot读取props和yml配置文件

spring-boot配置文件使用

如何在 spring-boot 配置中加载 application.yaml 配置以进行硒测试