2010-12-07 27 views
7

tengo algunos métodos anotados conprimavera @Scheduled inyectar tiempo de retardo

@Scheduled(fixedDelay = 6000) 
private void myScheduledMethod(){ 
//do something 
} 

También tengo un conjunto de archivos de propiedades donde configurar valores específicos de entorno. Para propósitos de prueba, me gustaría que el valor de la demora sea configurable, idealmente a través de una propiedad en un archivo de propiedades.

Dado que el valor de fixedDelay tiene que ser constante, estoy buscando una manera de obtener este conjunto de un archivo de propiedades, pero no he encontrado una manera de hacerlo todavía.

Respuesta

6

me quedé atrapado en los mismos temas, pero la mejor manera de resolver esto ahora sería:

@Scheduled(fixedDelayString = "${my.delay.property}") 
public void myScheduledMethod(){ 
    // do something 
} 
5

Sería bueno tener esta opción, pero creo que no existe (la anotación es de nivel de clase, mientras que el valor se inyectaría cuando se crea una instancia).

Para hacer esto configurable use el espacio de nombres xml <task:. Al igual que el ejemplo de la spring docs:

<task:scheduled-tasks scheduler="myScheduler"> 
    <task:scheduled ref="someObject" method="someMethod" 
     fixed-delay="${configuredDelay}"/> 
</task:scheduled-tasks> 
Cuestiones relacionadas