Expressão Spring cron para cada dia 1: 01: am

Estou a tentar que o meu código seja executado num horário fixo, baseado numa expressão de Spring cron. Gostaria que o código fosse executado todos os dias à 1:01 da manhã. Tentei a seguinte expressão, mas isto não acendeu para mim. O que há de errado com a sintaxe aqui?

@Scheduled(cron = "0 1 1 ? * *")
public void resetCache() {
    // ...
}
Author: nbrooks, 2014-10-01

6 answers

Tenta com:

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

Abaixo pode encontrar os padrões de exemplo do fórum 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

A expressão de Cron é representada por seis campos:

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

(*) significa corresponder a qualquer

*/X significa "cada X"

? ("nenhum valor específico") - útil quando você precisa especificar algo em um dos dois campos em que o caráter é permitido, mas não o outro. Por exemplo, se eu quiser que o meu gatilho dispare num determinado dia do mês (digamos, dia 10), mas Não me interessa que dia da semana seja, poria "10" no campo do dia do mês e"?"no campo do dia da semana.

PS: para que funcione, lembre-se de ativá-lo no seu contexto de Aplicação: https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/scheduling.html#scheduling-annotation-support

 373
Author: gipinani, 2018-04-09 12:18:07

Para o meu programador, estou a usá-lo para disparar às 6 da manhã todos os dias e a minha notação de cron é:

0 0 6 * * *

Se quiser 1: 01 da manhã, defina-o para

0 1 1 * * *

Código completo para o scheduler

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

** MUITO IMPORTANTE

Para ter a certeza sobre o tempo de disparo correcção do seu escalonador, você tem que definir o valor da zona como este (estou em Istambul):

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

Você pode encontrar os valores completos do fuso horário de aqui .

Nota: a minha mola version is: 4.0.7.Libertação
 56
Author: Bahadir Tasdemir, 2016-06-22 11:25:52

Pode utilizar anotar o seu método com @Scheduled(cron ="0 1 1 * * ?").

0-é para segundos

1 - 1 minuto

1 hora do dia.
 21
Author: user3298173, 2015-12-12 05:11:13
Falta alguma coisa na resposta do gipinani.
@Scheduled(cron = "0 1 1,13 * * ?", zone = "CST")

Isto será executado em 1.01 e 13.01. Ele pode ser usado quando você precisa executar o trabalho sem um padrão várias vezes por dia.

E o atributo zone é muito útil, quando você faz implementações em servidores remotos. Isto foi introduzido com a primavera 4.

 8
Author: Maleen Abewardana, 2016-06-08 18:29:10
Uma coisa que reparei é que o crongger da primavera não é o cron. Você pode acabar com 7 parâmetros em uma expressão de cron válida (que você pode validar em cronmaker.com) e então a primavera não aceitar. A maioria dos casos você apenas apaga o último parâmetro e tudo funciona bem.
 6
Author: Irlan Cidade, 2016-07-21 20:50:23

Expressão de Cron de Primavera para todos os dias 1: 01: am

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

Para mais informações, consulte esta informação:

https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm

 1
Author: MACCXpace, 2018-01-17 21:26:24