Anotações de agendamento da primavera

Anotações de agendamento da primavera

1. Visão geral

Quando a execução de thread único não é suficiente, podemos usar anotações do pacoteorg.springframework.scheduling.annotation.

Neste tutorial rápido, vamos explorar as anotações de agendamento de primavera.

2. @EnableAsync

Com esta anotação, podemos ativar a funcionalidade assíncrona no Spring.

Devemos usá-lo com@Configuration:

@Configuration
@EnableAsync
class VehicleFactoryConfig {}

Agora que habilitamos as chamadas assíncronas, podemos usar@Async para definir os métodos de suporte.

3. @EnableScheduling

Com esta anotação, podemos ativar o agendamento no aplicativo.

Também temos que usá-lo em conjunto com@Configuration:

@Configuration
@EnableScheduling
class VehicleFactoryConfig {}

Como resultado, agora podemos executar métodos periodicamente com@Scheduled.

4. @Async

Podemos definir métodos que queremosexecute on a different thread, portanto, executá-los de forma assíncrona.

Para conseguir isso, podemos anotar o método com@Async:

@Async
void repairCar() {
    // ...
}

Se aplicarmos esta anotação a uma classe, todos os métodos serão chamados de forma assíncrona.

Observe que precisamos habilitar as chamadas assíncronas para que essa anotação funcione, com@EnableAsync ou configuração XML.

Mais informações sobre@Async podem ser encontradas emthis article.

5. @Scheduled

Se precisarmos de um método paraexecute periodically, podemos usar esta anotação:

@Scheduled(fixedRate = 10000)
void checkVehicle() {
    // ...
}

Podemos usá-lo para executar um método emfixed intervals ou podemos ajustá-lo comcron-like expressions.

@Scheduled aproveita o recurso de anotações repetidas do Java 8, o que significa que podemos marcar um método com ele várias vezes:

@Scheduled(fixedRate = 10000)
@Scheduled(cron = "0 * * * * MON-FRI")
void checkVehicle() {
    // ...
}

Observe que o método anotado com@Scheduled deve ter um tipo de retornovoid.

Além disso, temos que habilitar o agendamento para que esta anotação funcione, por exemplo, com@EnableScheduling ou configuração XML.

Para obter mais informações sobre a programação, leiathis article.

6. @Schedules

Podemos usar esta anotação para especificar várias regras@Scheduled:

@Schedules({
  @Scheduled(fixedRate = 10000),
  @Scheduled(cron = "0 * * * * MON-FRI")
})
void checkVehicle() {
    // ...
}

Observe que, desde o Java 8, podemos obter o mesmo com o recurso de anotações repetidas, conforme descrito acima.

7. Conclusão

Neste artigo, vimos uma visão geral das anotações de agendamento Spring mais comuns.

Como de costume, os exemplos estão disponíveisover on GitHub.