首页 > 解决方案 > spring 将 yml 中的字符串列表(一级)绑定到 Java 列表

问题描述

我有一个带有以下字符串列表的 yml 文件:

list-of-strings:
 - el1
 - el2
 - el3

我已经实现了一个配置类来检索它:

@ConfigurationProperties(prefix = "list-of-strings")
public class ListOfStringsConfig {

    private List<String> listOfStrings;

    public List<String> getListOfStrings) {
        return listOfStrings;
    }
} 

它无法检索字符串列表(当我访问 listOfStrings 时,它会引发 NullPointerException)。我注意到,如果我通过放置 2 个级别来更改 yml,例如:

list:
  strings:
   - el1
   - el2
   - el3

并相应地修改配置:

@ConfigurationProperties(prefix = "list")
public class ListOfStringsConfig {

    private List<String> strings;

    public List<String> getStrings) {
        return strings;
    }
} 

它按预期工作。因为对于我的案例来说,有 2 个级别根本没有意义,我想知道是否有办法让它与第一个用例一起工作,所以在 yaml 中只有一个级别。

标签: javaspringspring-bootyaml

解决方案


如果你真的只需要一个级别,那么你需要删除前缀。它的工作方式是前缀+变量名来映射值。

话虽如此,我不会推荐它,因为拥有已经存在的东西会容易得多。

旁注:如果您只有一个要获取的值,则可以@Value改用


推荐阅读