Spring scheduler — выполнение кода по расписанию

spring scheduler

Сегодня мы поговорим о возможности запускать выполнение кода по расписанию. Для этого будем пользоваться Spring @Sheduled анотацией.

Бывает, что выполнение кода нужно подогнать под некоторое время или запускать его с определенной периодичностью. В языке Java есть много способов сделать это. Сегодня я покажу один из самых простых и распространенных — @Sheduled. 

Для выполнения этого кода нам нужно простое Spring Boot приложение. Для этого идем на сайт start.spring.io и добавляем Web зависимость для нашего проекта. Это понадобиться для того, чтобы спринг подключил нам встроенный томкат и приложение работало в фоновом режиме:

генерация spring boot проекта

Это все зависимости которые нам нужны. Далее нужно нажать кнопку Generate Project. Должна начаться автоматическая загрузка. Распакуйте архив в удобную для Вас папку и откройте проект как Вы обычно открываете Maven проекты. У меня это в основном так:

открытие Maven проекта

Для того, чтобы разрешить использовать расписание в своем проекте необходимо на главный класс Spring Boot навешать аннотацию @EnableScheduling. Тем самым Вы укажите, что разрешаете шедулинг.

Вот полный код моего класса DemoApplication:

Далее перейдем на написанию самого класса расписания. Для этого нужно создать новый класс. Я назову его SchedulerExample. Для того, чтобы класс стал частью шедулинга нужно повесить на него аннотацию @Component. Далее нужно просто создать метод и навешать на него аннотацию @Scheduled в параметр которой нужно указать время, через которое будет выполняться этот метод. Вот полный код моего класса-расписания:

После запуска приложения Вы должны увидеть, как работает шедулер:

результат работы шедулера

Параметр аннотации @Scheduled принимает как fixedRate, так и cron.

Выражения Cron используются для настройки экземпляров CronTrigger, подкласса org.quartz.Trigger. Выражение cron — это строка, состоящая из шести или семи подвыражений (полей), которые описывают отдельные детали расписания.

Эти поля, разделенные пробелами, могут содержать любые допустимые значения с различными комбинациями разрешенных символов для этого поля.

Это вольный перевод официальной документации Oracle: https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm

Если своими словами — cron это представление расписания в строковом представлении.

А если еще проще, то если переделать пример выше с fixedRate на cron — будет следующий код:

С помощью выражения cron можно настроить выполнения кода на любое время, день недели, месяца или года. Выражение может показаться запутанным и сложным. У меня есть свое правило создания крон выражения: я просто гугулю нужное мне время и нахожу или онлайн составители cron выражений, или готовые ответы на stackoverflow.

Вот так просто пользоваться Spring scheduler и составлять выполнение кода по расписанию. Код очень простой и понятен поэтому выкладывать его на гитхаб не имеет смысла.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *