如何在Spring Boot 2.6中从YAML加载列表

29 浏览
0 Comments

如何在Spring Boot 2.6中从YAML加载列表

我试图从application.yml文件中加载一个字符串数组。这是配置:

ignore:
    filenames:
        - .DS_Store
        - .hg

这是类的片段:

@Value("${ignore.filenames}")
private List igonoredFileNames = new ArrayList<>();

同一类中还有其他配置加载得很好。我的YAML文件中没有制表符。尽管如此,我仍然会得到以下异常:

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'ignore.filenames' in string value "${ignore.filenames}"

admin 更改状态以发布 2023年5月23日
0
0 Comments

我的猜测是,@Value无法处理“复杂”类型。您可以使用像这样的属性类:

@Component
@ConfigurationProperties('ignore')
class IgnoreSettings {
    List filenames
}

请注意:这段代码是Groovy—— 不是Java——为了让例子更简短!请查看评论以获取适应提示。

查看完整的示例https://github.com/christoph-frick/so-springboot-yaml-string-list

0
0 Comments

在 application.yml 中使用逗号分隔的值

ignoreFilenames: .DS_Store, .hg

访问的 Java 代码

@Value("${ignoreFilenames}")    
String[] ignoreFilenames

它正在工作中 😉

0