2011-10-26 20 views
8
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 
     <property name="jobDetail" ref="Job1" /> 
     <property name="repeatInterval" value="1" /> 
    </bean> 

quiero cargar value de un archivo de propiedades (value = "${jobs.per.second} "), que será manipulado¿Cómo hacer operaciones aritméticas en Spring?

Por ejemplo:. jobs.properties archivo tendrá: jobs.per.second = 500

Quiero usar operaciones aritméticas (invertirla y se multiplica por 1000) (1/500 * 1000 = 2) y sustituir value = 2 en lugar de 1.

¿Cómo hago para que? ¿hay alguna manera de permitir las operaciones aritméticas en XML?

EDIT: Estoy usando la primavera 3.

+0

las hace [esto] [1] pregunta y solución de ayuda? [1]: http://stackoverflow.com/questions/5953468/performing-arithmetic-using-spring-expression-language-and-propertyplaceholderco –

Respuesta

11

Usted no ha mencionado qué versión de la primavera que está utilizando, pero Spring 3.0 Viene con spring EL (Expression Language), que permite el uso de expresiones en el XML definiciones de beans (y otros lugares, como anotaciones @Value).

<util:properties id="properties" location="classpath:jobs.properties"/> 
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 
    <property name="jobDetail" ref="Job1" /> 
    <property name="repeatInterval" value="#{ 1000/properties['jobs.per.second'] * 100.0 }" /> 
</bean> 

Puede leer más sobre Spring EL here

+0

Sí, es primavera 3. Soy capaz de resolver la cuestión. Esto definitivamente ayudará a otros con problemas similares. –

+0

¿Sabe por casualidad cómo funciona junto con el configurador de marcador de posición de propiedad? ¿Puedo usar "# {1000/$ {jobs.per.second} * 100.0}"? –

+0

Spring 4, '' funciona sin problemas. Podría funcionar también con la primavera 3. – SashikaXP

Cuestiones relacionadas