Spring @Value空列表默认​​为

时间:2017-03-21 07:19:32

标签: java spring spring-annotations

有没有办法在Spring中将空列表设置为属性的默认值,如:

@Value("${my.list.of.strings :" + new ArrayList<>() + "}")
private List<String> myList;

显然不是新的ArrayList,但我需要一个空列表。

4 个答案:

答案 0 :(得分:13)

在看了SpEL规范并结合@ javaguy的回答后,我想出了这个:

@Value("${my.list.of.strings:}#{T(java.util.Collections).emptyList()}")
private List<String> myList;

答案 1 :(得分:3)

实际上,在当前的Spring版本中,只有一个符号:的值为empty default

我正在使用的完整示例:

@Value("${my.custom.prop.array:}")
private List<Integer> myList;

为确保更安全,我还将init添加到List变量中:

@Value("${my.custom.prop.array:}")
private List<Integer> myList = new ArrayList<>();

答案 2 :(得分:1)

您可以使用Collections.emptyList() 填充零大小的空列表对象,如下所示:

@Value("#{T(java.util.Collections).emptyList()}")
private List<String> myList;

这将为您提供零大小的myList

答案 3 :(得分:0)

@Value("#{T(java.util.Arrays).asList('${my.list.of.strings:}')}")
private List<String> myList;

使用Spring 5.0.x为我工作(如果未在上下文中配置my.list.of.strings属性,则会提供空列表)

之后,您可以轻松地执行类似的操作

CollectionUtils.isNotEmpty(myList)