Автор оригинала: Attila Fejér.
1. Обзор
Когда однопоточного выполнения недостаточно, мы можем использовать аннотации из пакета org.springframework.scheduling.annotation|/.
В этом кратком руководстве мы рассмотрим аннотации весеннего планирования.
2. @EnableAsync
С помощью этой аннотации мы можем включить асинхронную функциональность весной.
Мы должны использовать его с @Configuration :
@Configuration @EnableAsync class VehicleFactoryConfig {}
Теперь, когда мы включили асинхронные вызовы, мы можем использовать @Async для определения методов, поддерживающих его.
3. @EnableScheduling
С помощью этой аннотации мы можем включить планирование в приложении.
Мы также должны использовать его в сочетании с @Configuration :
@Configuration @EnableScheduling class VehicleFactoryConfig {}
В результате теперь мы можем периодически запускать методы с помощью @Scheduled .
4. @Async
Мы можем определить методы , которые мы хотим выполнить в другом потоке , следовательно, запускать их асинхронно.
Для этого мы можем аннотировать метод с помощью @Async :
@Async void repairCar() { // ... }
Если мы применим эту аннотацию к классу, то все методы будут вызываться асинхронно.
Обратите внимание, что нам нужно включить асинхронные вызовы для работы этой аннотации с конфигурацией @EnableAsync или XML.
Более подробную информацию о @Async можно найти в этой статье .
5. @По расписанию
Если нам нужен метод для периодического выполнения , мы можем использовать эту аннотацию:
@Scheduled(fixedRate = 10000) void checkVehicle() { // ... }
Мы можем использовать его для выполнения метода с фиксированными интервалами , или мы можем настроить его с помощью cron-подобных выражений .
@Scheduled использует функцию повторяющихся аннотаций Java 8, что означает, что мы можем пометить метод с его помощью несколько раз:
@Scheduled(fixedRate = 10000) @Scheduled(cron = "0 * * * * MON-FRI") void checkVehicle() { // ... }
Обратите внимание, что метод, аннотированный @Scheduled , должен иметь тип возврата void .
Кроме того, мы должны включить планирование для этой аннотации, чтобы она работала, например, с @EnableScheduling или конфигурацией XML.
Для получения дополнительной информации о планировании прочитайте эту статью .
6. @Расписания
Мы можем использовать эту аннотацию для указания нескольких @Запланированных правил:
@Schedules({ @Scheduled(fixedRate = 10000), @Scheduled(cron = "0 * * * * MON-FRI") }) void checkVehicle() { // ... }
Обратите внимание, что начиная с Java 8 мы можем добиться того же с помощью функции повторяющихся аннотаций, как описано выше.
7. Заключение
В этой статье мы рассмотрели обзор наиболее распространенных аннотаций весеннего планирования.
Как обычно, примеры доступны на GitHub .