2017-03-21 2 views
3

Y at-il un moyen de définir une liste vide comme valeur par défaut pour une propriété au printemps, quelque chose comme:Spring @Value liste vide par défaut

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

De toute évidence pas nouvelle ArrayList, mais je besoin d'une liste vide là-bas au lieu.

+0

Est 'private Liste myList = new ArrayList <>() 'pas assez? –

Répondre

5

Après avoir pris un coup d'œil à la spécification Spel et combiné avec la réponse de @ javaguy je suis venu avec ceci:

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

ma réponse crée une liste vide, si cela aide, vous pouvez l'accepter – developer

+0

votre réponse est utile mais incomplète, car l'annotation de valeur pointe vers une propriété en premier lieu (qui doit être initialisée lorsqu'elle n'est pas présente - sinon elle conduit à un IllegalArgumentException) –

+0

Je l'ai utilisé pour la taille zéro 'list' dans mon projet et n'ai pas obtenu' IllegalArgumentException' – developer

0

Vous pouvez utiliser Collections.emptyList()pour renseigner l'objet de liste vide avec une taille zéro comme indiqué ci-dessous:

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

Cela vous donnera un zéro taille myList