Expresión cron de primavera para todos los días 1:01:am

Resuelto d-man asked hace 10 años • 0 respuestas

Estoy intentando que mi código se ejecute en un horario fijo, basado en una expresión cron de Spring. Me gustaría que el código se ejecutara todos los días a la 1:01 a. m. Probé la siguiente expresión, pero no me funcionó. ¿Qué hay de malo con la sintaxis aquí?

@Scheduled(cron = "0 1 1 ? * *")
public void resetCache() {
    // ...
}
d-man avatar Oct 02 '14 00:10 d-man
Aceptado

Prueba con:

@Scheduled(cron = "0 1 1 * * ?")

A continuación puede encontrar los patrones de ejemplo del foro de primavera:

* "0 0 * * * *" = the top of every hour of every day.
* "*/10 * * * * *" = every ten seconds.
* "0 0 8-10 * * *" = 8, 9 and 10 o'clock of every day.
* "0 0 8,10 * * *" = 8 and 10 o'clock of every day.
* "0 0/30 8-10 * * *" = 8:00, 8:30, 9:00, 9:30 and 10 o'clock every day.
* "0 0 9-17 * * MON-FRI" = on the hour nine-to-five weekdays
* "0 0 0 25 12 ?" = every Christmas Day at midnight

La expresión cron está representada por seis campos:

second, minute, hour, day of month, month, day(s) of week

(*)significa coincidir con cualquier

*/Xsignifica "cada X"

?("sin valor específico"): útil cuando necesita especificar algo en uno de los dos campos en los que se permite el carácter, pero no en el otro. Por ejemplo, si quiero que mi disparador se active en un día particular del mes (por ejemplo, el día 10), pero no me importa qué día de la semana sea, pondría "10" en el día. campo del mes y "?" en el campo del día de la semana.

PD: para que funcione, recuerde habilitarlo en el contexto de su aplicación: https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/scheduling.html#scheduling- soporte de anotaciones

gipinani avatar Oct 01 '2014 17:10 gipinani

Para mi programador, lo uso para activar a las 6 am todos los días y mi notación cron es:

0 0 6 * * *

Si desea 1:01:am, configúrelo en

0 1 1 * * *

Código completo para el planificador.

@Scheduled(cron="0 1 1 * * *")
public void doScheduledWork() {
    //complete scheduled work
}

** MUY IMPORTANTE

Para estar seguro de que el tiempo de activación de su programador es correcto, debe establecer un valor de zona como este (estoy en Estambul):

@Scheduled(cron="0 1 1 * * *", zone="Europe/Istanbul")
public void doScheduledWork() {
    //complete scheduled work
}

Puede encontrar los valores completos de la zona horaria desde aquí .

Nota: Mi versión de Spring Framework es: 4.0.7.RELEASE

Bahadir Tasdemir avatar Jun 22 '2016 11:06 Bahadir Tasdemir

Puede utilizar anotar su método con @Scheduled(cron ="0 1 1 * * ?").

0 - es por segundos

1-1 minuto

1 - hora del día.

user3298173 avatar Oct 01 '2014 19:10 user3298173

Algo falta en la respuesta de gipinani

@Scheduled(cron = "0 1 1,13 * * ?", zone = "CST")

Esto se ejecutará a las 1.01 y 13.01. Se puede utilizar cuando necesite ejecutar el trabajo sin un patrón varias veces al día.

Y el atributo de zona es muy útil cuando realiza implementaciones en servidores remotos. Esto se introdujo con la primavera 4.

Maleen Abewardana avatar Jun 08 '2016 18:06 Maleen Abewardana