¿Hay alguna manera de establecer una lista vacía como valor predeterminado para una propiedad en Spring, algo así como:
@Value("${my.list.of.strings :" + new ArrayList<>() + "}") private List<String> myList;Obviamente, no es una nueva ArrayList, pero necesito una lista vacía allí.
Después de echar un vistazo a la especificación SpEL y combinarla con la respuesta de @javaguy, se me ocurrió esto:
@Value("${my.list.of.strings:}#{T(java.util.Collections).emptyList()}") private List<String> myList;En realidad, en las versiones actuales de Spring solo funciona un símbolo : con un valor empty default .
El ejemplo completo que estoy usando:
@Value("${my.custom.prop.array:}") private List<Integer> myList;Para estar seguro y más seguro, también agrego init a la variable List:
@Value("${my.custom.prop.array:}") private List<Integer> myList = new ArrayList<>();@Value("#{T(java.util.Arrays).asList('${my.list.of.strings:}')}") private List<String> myList;funciona para mí, usando Spring 5.0.x (da una lista vacía, si su propiedad my.list.of.strings no está configurada en contexto)
después puedes hacer fácilmente algo como
CollectionUtils.isNotEmpty(myList)