2012-03-06 5 views
6

Estoy usando PropertyPlaceholderConfigurer para mapear valores de cadenas desde el archivo de propiedades y funciona bien.Usar PropertyPlaceholderConfigurer con la lista

Mi pregunta es si puedo establecer algo que el esto en mi archivo de propiedades: myList = A, B, C

Y a continuación, asignar a una lista

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

Cuando trato que pone todos los valores en un lugar de la lista. ¿Hay alguna manera de decirle que rompa esto en una lista con ","?

Respuesta

12

Usando lenguaje de expresión de primavera:

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

Si myList=A,B,C en el archivo de la propiedad Esto dará lugar a myList (en el código) con los valores A, B y C

+0

¡Bien hecho, gracias! – Joly

+0

Tenga en cuenta que el código original funcionaría sin .split(), si está utilizando el resorte 3 y define un servicio de conversión - http://stackoverflow.com/a/29970335/228369 – chrismarx

0

Eche un vistazo a las secciones 6.5.3 (Listas en línea) y 6.5.4 (Construcción de matrices) en this link to Spring Expression Language Features.

Desde el enlace:

Las listas pueden ser expresados ​​directamente en una expresión usando la notación {}.

// 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); 

{} por si solo significa una lista vacía. Por motivos de rendimiento, si la lista está compuesta en su totalidad de literales fijos, entonces se crea una lista constante para representar la expresión, en lugar de crear una nueva lista en cada evaluación.

No estoy seguro de que esto va a funcionar exactamente como le gustaría que a la @Value anotación en combinación con el PropertyPlaceholderConfigurer, pero vale la pena un vistazo.

+0

, gracias Voy a tener una mirada, pero como usted dice puede no funcionar la anotación @Value – Joly

+0

Justo como pensaba, no funciona con @Value, pero gracias de todos modos – Joly

+0

¿Qué intentaron que no funcionó exactamente? –

Cuestiones relacionadas