Falando em tarefas agendadas, devemos pensar em @Scheduled, Quartz e XXL-JOB. No entanto, alguns serviços únicos ou pequenos projetos podem usar @Scheduled diretamente para implementar tarefas assíncronas por conveniência e velocidade. Portanto, os requisitos temáticos deste artigo são ampliados.
Quando @Scheduled é usado em um projeto, como a tarefa assíncrona especificada pode ser executada antecipadamente quando o projeto é iniciado?
1. Explicação detalhada de @Scheduled
A anotação @Scheduled oferece suporte a vários parâmetros para controlar de maneira flexível o tempo de execução da tarefa.
cron: expressão Cron, que pode controlar com precisão segundos, minutos, horas, dias, meses, semanas, etc.
zone: Recebe um fuso horário, como Ásia/Xangai, o fuso horário que geralmente usamos. Geralmente deixamos este campo em branco.
fixaDelay: Quanto tempo após o término da última execução ele será executado novamente. Como @Scheduled(fixedDelay = 5000)
fixaDelayString: tem o mesmo significado que fixaDelay, mas na forma de uma string. A única diferença é que ele suporta espaços reservados, como @Scheduled(fixedDelayString = "5000")
fixaRate: quanto tempo após o último início do tempo de execução, como @Scheduled(fixedRate = 5000)
fixaRateString: tem o mesmo significado que fixaRate, mas na forma de uma string. A única diferença é que os marcadores de posição são suportados.
inicialDelay: Quanto tempo atrasar a execução pela primeira vez. Por exemplo, o primeiro atraso é de 1 segundo antes da execução. Depois disso, ele será executado a cada 5 segundos de acordo com a regra fixaRate. )
inicialDelayString: tem o mesmo significado que inicialDelayString, mas na forma de uma string. A única diferença é que os marcadores de posição são suportados.
Nota: Lembre-se de adicionar @EnableScheduling à classe de inicialização para que a tarefa agendada seja executada. Obviamente, isso não afeta o teste lógico deste artigo.
3. Resultados do teste
Após o início do serviço, visualize as informações de impressão