有没有办法在Spring中将空列表设置为属性的默认值,如:
@Value("${my.list.of.strings :" + new ArrayList<>() + "}")
private List<String> myList;
显然不是新的ArrayList,但我需要一个空列表。
答案 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)