Весеннее планирование аннотаций
1. обзор
Когда однопоточного выполнения недостаточно, мы можем использовать аннотации из пакетаorg.springframework.scheduling.annotation.
В этом кратком руководстве мы собираемся изучить Spring Scheduling Annotations.
2. @EnableAsyncс
С помощью этой аннотации мы можем включить асинхронную функциональность в Spring.
Мы должны использовать его с@Configuration:
@Configuration
@EnableAsync
class VehicleFactoryConfig {}
Теперь, когда мы включили асинхронные вызовы, мы можем использовать@Async для определения поддерживающих его методов.
3. @EnableSchedulingс
С помощью этой аннотации мы можем включить планирование в приложении.
Мы также должны использовать его вместе с@Configuration:
@Configuration
@EnableScheduling
class VehicleFactoryConfig {}
В результате теперь мы можем периодически запускать методы с@Scheduled.
4. @Asyncс
Мы можем определить методы, которые мы хотимexecute on a different thread, следовательно, запускать их асинхронно.
Для этого мы можем аннотировать метод с помощью@Async:
@Async
void repairCar() {
// ...
}
Если мы применим эту аннотацию к классу, то все методы будут вызываться асинхронно.
Обратите внимание, что нам нужно включить асинхронные вызовы для работы этой аннотации с@EnableAsync или конфигурацией XML.
Более подробную информацию о@Async можно найти вthis article.
5. @Scheduledс
Если нам нужен методexecute periodically, мы можем использовать эту аннотацию:
@Scheduled(fixedRate = 10000)
void checkVehicle() {
// ...
}
Мы можем использовать его для выполнения метода наfixed intervals, или мы можем настроить его с помощьюcron-like expressions.
@Scheduled использует функцию повторяющихся аннотаций Java 8, что означает, что мы можем пометить метод с ее помощью несколько раз:
@Scheduled(fixedRate = 10000)
@Scheduled(cron = "0 * * * * MON-FRI")
void checkVehicle() {
// ...
}
Обратите внимание, что метод, помеченный@Scheduled, должен иметь тип возвратаvoid.
Более того, мы должны включить планирование, чтобы эта аннотация работала, например, с@EnableScheduling или конфигурацией XML.
Для получения дополнительной информации о планировании прочтитеthis article.
6. @Schedulesс
Мы можем использовать эту аннотацию, чтобы указать несколько правил@Scheduled:
@Schedules({
@Scheduled(fixedRate = 10000),
@Scheduled(cron = "0 * * * * MON-FRI")
})
void checkVehicle() {
// ...
}
Обратите внимание, что начиная с Java 8 мы можем достичь того же с помощью функции повторяющихся аннотаций, как описано выше.
7. Заключение
В этой статье мы увидели обзор наиболее распространенных аннотаций планирования Spring.
Как обычно доступны примерыover on GitHub.