Spring 带列表和默认值的@Value 注释

Spring @Value annotation with List and default value

我在配置文件中有一个 属性,其中包含这种格式的值列表。格式必须保持不变。 myapp.values=value1,value2,value2

我在我的配置中使用这些值 class 就像这样:

@Value("#{'{myapp.values}'.split(,)}")
private List<String> values;

我的问题是,如果配置文件中没有这样的 属性 或者 属性 是空的,有没有办法设置默认值(空列表或空列表)?

我尝试 google 但没有成功。人们要么使用不适合我的myapp.values={value1,value2,value3},要么使用不适合我的格式,或者对简单变量使用默认值,而不是列表。

我的问题只是关于通过更改@Value 注释来实现目标。请不要建议解决方法

@Value("${myapp.values:}#{T(java.util.Collections).emptyList()}")
private List<String> defaultToEmpty;

@Value("#{T(java.util.Arrays).asList('${myapp.values:}')}")
private List<String> defaultToEmpty = new ArrayList();

实际上,只有一个具有 empty default 值的符号 : 可以工作:

@Value("${myapp.values:}")
private List<String> values;