【问题标题】:How to define empty list in application.yml in spring boot如何在spring boot的application.yml中定义空列表
【发布时间】:2021-07-20 03:08:01
【问题描述】:

我的 spring boot 项目中有 application.yml 并想声明空列表。我的意思是有一个两级配置层次结构。需要这个类来获取在 application.yml 中声明的值

@Configuration
@ConfigurationProperties("book")
public class PropertiesReader {

    private List<Long> authors;

    public List<Long> getAuthors() {
        return new ArrayList<>(authors);
    }

    public void setAuthors(List<Long> authors) {
        this.authors= new ArrayList<>(authors);
    }

这就是 application.yml 部分的样子

book:
   library: ${LIBRARY_REFERENCE:library}
   secondValue:
      expirationAfter: 10
   authors: ${AUTHORS_IDS:[]}

因此,大括号中的值在另一个外部配置文件中声明。但是如果没有声明值,spring应该分配在冒号之后声明的默认值。在单个值中它可以工作,但是在 List 中,如果我如上所述声明它,我会得到 NumberFormatException,因为值 [] 已分配给列表。如何正确书写?

在外部配置中也应该怎么写?如果我有时想声明值,但有时它必须为空

name: AUTHORS_IDS
      value: 

【问题讨论】:

    标签: java spring spring-boot yaml


    【解决方案1】:

    你只需要放一个冒号。我已经解决了我的问题,它有效。

    book:
       authors: ${AUTHORS_IDS:}
    

    【讨论】:

    • 感谢它在项目内部声明的配置中工作。但是如何在更高级别分配它,我有这样的例外: at <.value>: wrong type for value;预期的字符串;但是,如果我为值分配空括号,它会将括号分配给列表而不是空列表吗?名称:AUTHORS_IDS 值:[]
    • 我很高兴我的解决方案有效。您尝试空值而不是空括号。示例:AUTHOR_IDS:
    • 空值和破折号都不能解决我的问题 :-( 我有一个迭代器,我不想进行迭代,因为它得到一个空列表。有什么想法吗?
    猜你喜欢
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 2023-02-14
    • 1970-01-01
    • 2017-04-04
    • 2019-12-19
    • 2022-01-09
    相关资源
    最近更新 更多