2012-03-06 12 views
6

Sto utilizzando PropertyPlaceholderConfigurer per mappare i valori stringa dal file delle proprietà e funziona correttamente.Utilizzare PropertyPlaceholderConfigurer con Elenco

La mia domanda è se posso impostare qualcosa che il questo nel mio file di proprietà: myList = A, B, C

E poi mappare a un elenco

@Value("${myList}") 
private List<String> myList; 

Quando provo che mette tutti i valori in un posto della lista. C'è un modo per dirlo di rompere questo in una lista con ","?

risposta

12

Utilizzando il linguaggio Primavera Espressione:

@Value("#{'${myList}'.split(',')}") 
private List<String> myList; 

Se myList=A,B,C in file di proprietà questo si tradurrà in myList (nel codice) con i valori A, B e C

+0

Bello, grazie !!! – Joly

+0

Nota che il codice originale funzionerebbe senza .split(), se stai utilizzando la molla 3 e definisci un servizio di conversione: http://stackoverflow.com/a/29970335/228369 – chrismarx

0

Dai uno sguardo alle sezioni 6.5.3 (Elenchi in linea) e 6.5.4 (Costruzione di array) su this link to Spring Expression Language Features.

Dal link:

Le liste possono essere espressi direttamente in un'espressione utilizzando {} la notazione.

// evaluates to a Java list containing the four numbers 
List numbers = (List) parser.parseExpression("{1,2,3,4}").getValue(context); 

List listOfLists = (List) parser.parseExpression("{{'a','b'},{'x','y'}}").getValue(context); 

{} per sé affatto un elenco vuoto. Per motivi di prestazioni, se l'elenco è composto interamente da valori letterali fissi, allora un elenco costante è creato per rappresentare l'espressione, anziché creare un nuovo elenco in ciascuna valutazione.

Io non sono sicuro che questo funzionerà esattamente come si vorrebbe che per il @Value annotazioni in combinazione con il PropertyPlaceholderConfigurer, ma vale la pena dare un'occhiata.

+0

Grazie avrò un look, ma come dici tu potrebbe non funzionare l'annotazione @Value – Joly

+0

Proprio come pensavo, non funziona con @Value ma grazie comunque – Joly

+0

Cosa hai provato che non funzionava esattamente? –

Problemi correlati