Аннотации планирования весны

Весеннее планирование аннотаций

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.