Al usar la capacidad de Spring 3.0 para anotar una tarea programada, me gustaría establecer el fixedDelay
parámetro como desde mi archivo de configuración, en lugar de conectarlo a mi clase de tarea, como actualmente ...
@Scheduled(fixedDelay = 5000)
public void readLog() {
...
}
Desafortunadamente, parece que con los medios del lenguaje de expresión de primavera (SpEL) se @Value
devuelve un objeto String que, a su vez, no se puede encuadrar automáticamente en un valor largo como lo requiere el fixedDelay
parámetro.
Spring v3.2.2 ha agregado parámetros de cadena a los 3 parámetros largos originales para manejar esto.
fixedDelayString
,fixedRateString
yinitialDelayString
ahora también están disponibles.fuente
Puede usar la
@Scheduled
anotación, pero solo junto con elcron
parámetro:Su intervalo de 5 segundos podría expresarse como
"*/5 * * * * *"
. Sin embargo, según tengo entendido, no puede proporcionar menos de 1 segundo de precisión.fuente
En Spring Boot 2, podemos usar Spring Expression Language (SpPL) para las
@Scheduled
propiedades de anotación:El
application.properties
archivo se verá así:Eso es. Aquí hay un artículo que explica la programación de tareas en detalle.
fuente
Supongo que puede convertir el valor usted mismo definiendo un bean. No lo he intentado , pero supongo que un enfoque similar al siguiente podría ser útil para usted:
dónde:
fuente
@Scheduled
anotación.