2012-05-16 14 views
6

Tengo una propiedad (String, obviamente) expresada en minutos que quiero convertir a int antes de hacer algo de aritmética e inyectarlo en mi Spring Bean. Ahora mismo tengo esta expresión SpEL:Lenguaje de expresión de primavera (SpEL): analizar cadena a int

#{T(java.lang.Integer).parseInt(myProperties['MIN_TIME']) * 60 * 1000} 

donde myProperties es un simple grano de java.util.Properties.

No es que esté particularmente molesto por esta expresión, pero sin embargo: ¿el SpEL tiene una manera más bonita e integrada de analizar cadenas en valores numéricos?

Gracias!

Respuesta

9

No se parece a eso, p. ver cómo los desarrolladores a crear aquí: https://jira.springsource.org/browse/SPR-8716

Una versión ligeramente más corto podría ser

#{new Integer(myProperties['MIN_TIME']) * 60 * 1000} 
+0

Esto hará. ¡Gracias! –

+0

¿Es posible hacer algo como esto para las anotaciones? ** @ Size ((min = "# {new Integer (applicationProperties [size.min])") int privado; ** – luksmir

+0

@luksmir No lo sé. Lo mejor es hacer una nueva pregunta – artbristol

0

Otra manera de hacer esto es utilizar el espacio de nombres util para definir un grano de propiedades, ... xmlns : util = "http://www.springframework.org/schema/util" ... http://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util-3.1.xsd ...

<util:properties id="apiProperties" 
    location="classpath:/api.properties" /> 

continuación, utilizar la sintaxis alternativa para las propiedades de frijol

@Value("#{apiProperties['api.orders.pingFrequency']}") 
private Integer pingFrequency; 

El resorte util propiedades bean generado por el contexto va a hacer el análisis sintáctico y la conversión antes de asignar el valor.

Cuestiones relacionadas