Spring @Value 默认为空列表
Spring @Value empty list as default
有没有办法将空列表设置为 Spring 中 属性 的默认值,例如:
@Value("${my.list.of.strings :" + new ArrayList<>() + "}")
private List<String> myList;
显然不是新的 ArrayList,但我需要一个空列表。
您可以使用 Collections.emptyList()
填充零大小的空列表对象,如下所示:
@Value("#{T(java.util.Collections).emptyList()}")
private List<String> myList;
这会给你一个零大小的 myList
在查看了 SpEL 规范并结合@javaguy 的回答后,我想到了这个:
@Value("${my.list.of.strings:}#{T(java.util.Collections).emptyList()}")
private List<String> myList;
@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)
实际上,在当前的 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<>();
有没有办法将空列表设置为 Spring 中 属性 的默认值,例如:
@Value("${my.list.of.strings :" + new ArrayList<>() + "}")
private List<String> myList;
显然不是新的 ArrayList,但我需要一个空列表。
您可以使用 Collections.emptyList()
填充零大小的空列表对象,如下所示:
@Value("#{T(java.util.Collections).emptyList()}")
private List<String> myList;
这会给你一个零大小的 myList
在查看了 SpEL 规范并结合@javaguy 的回答后,我想到了这个:
@Value("${my.list.of.strings:}#{T(java.util.Collections).emptyList()}")
private List<String> myList;
@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)
实际上,在当前的 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<>();