Expresión cron de primavera para todos los días 1:01:am
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() {
// ...
}
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
*/X
significa "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
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
Puede utilizar anotar su método con @Scheduled(cron ="0 1 1 * * ?")
.
0 - es por segundos
1-1 minuto
1 - hora del día.
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.