Pular para o conteúdo
CronExplain

Explicador de expressões cron do Spring

A anotação @Scheduled(cron = "...") do Spring usa um formato cron de seis campos com os segundos primeiro. Cole uma expressão Spring para lê-la em linguagem simples e conferir as próximas execuções no fuso horário do seu servidor.

O que significa

Spring @Scheduled: seis campos com os segundos primeiro, 0 ou 7 = domingo; suporta L, W, # e macros como @daily.

✓ Válida · O que significa

Às 09:00, de segunda-feira a sexta-feira

Atalhos

Próximas 10 execuções

#Em UTCSeu horário local
1——
2——
3——
4——
5——
6——
7——
8——
9——
10——

O mesmo agendamento em outros dialetos

  • crontab padrão0 9 * * 1-5
  • Quartz0 0 9 ? * MON-FRI
  • AWS EventBridgecron(0 9 ? * MON-FRI *)As regras do EventBridge usam UTC.

Construtor visual

Escolha valores para cada campo. O construtor gera uma expressão padrão de cinco campos, convertida para o dialeto selecionado ao ser usada.

Minuto
Hora
Dia do mês
Mês
Dia da semana
0 9 * * 1-5

Formato cron do Spring

Uma expressão Spring tem seis campos: segundo, minuto, hora, dia do mês, mês e dia da semana, por exemplo 0 0 9 * * MON-FRI para 09:00 nos dias úteis. O domingo pode ser escrito como 0, 7 ou SUN. Desde o Spring Framework 5.3, o parser também entende L, W e # nos campos de dia, além de macros como @hourly e @daily.

Fuso horário do @Scheduled

Por padrão, as expressões são avaliadas no fuso horário padrão do servidor. Defina o atributo zone, por exemplo @Scheduled(cron = "0 0 2 * * *", zone = "America/Sao_Paulo"), para que o agendamento não dependa do host. Escolha o mesmo fuso na ferramenta para conferir as execuções.

Spring x Quartz

As expressões do Spring se parecem com as do Quartz, mas mudam em detalhes: não há campo de ano, o domingo é 0 e não 1, e “?” é aceito, mas não obrigatório. Quando os dois campos de dia são restritos, o Spring exige que ambos coincidam. O conversor mostra o equivalente Quartz quando ele existe.

Ativando o agendamento

Métodos com cron só rodam quando o agendamento é ativado com @EnableScheduling. Por padrão o Spring usa uma única thread, então uma tarefa longa atrasa todos os outros métodos agendados; configure um ThreadPoolTaskScheduler ou spring.task.scheduling.pool.size se tiver várias tarefas. Em cluster, cada instância dispara o mesmo cron — use uma trava como o ShedLock se a tarefa só puder rodar uma vez.

Perguntas frequentes

Por que o Spring diz que a expressão precisa ter seis campos?
O Spring precisa de um campo de segundos. Acrescente 0 no início de uma expressão crontab de cinco campos: 0 */5 * * * * roda a cada cinco minutos.
Como desativo uma tarefa @Scheduled com cron?
Use o valor especial "-" (Scheduled.CRON_DISABLED), normalmente por meio de um placeholder de propriedade.
O Spring suporta o último dia do mês?
Sim, desde a 5.3: 0 0 0 L * * roda à meia-noite do último dia de cada mês.
Posso ler a expressão cron da configuração?
Sim, por exemplo @Scheduled(cron = "${jobs.cleanup.cron}"), para que o agendamento mude conforme o ambiente.