Запланированные задачи также являются обычным требованием в нашей повседневной разработке, и на рынке есть много зрелых фреймворков:
- quartz
- elastic-job
- xxl-job
- ...
Но друзья знают, что на самом деле наша среда Spring также предоставляет соответствующие временные задачи, эта временная задача проходит@EnableScheduling
Аннотация включена. Song Ge также написал статью, чтобы поделиться с вами основным использованием этой аннотации:
Однако предыдущие запланированные задачи были исправлены, записаны заранее и не могли быть динамически настроены.Два дня назад маленький друг спросил Сонг Гэ, как реализовать динамическую настройку запланированных задач?
Если эта штука основана на фреймворке, таком как xxl-job, на самом деле это сделать проще, но это идет с Spring.@EnableScheduling
На самом деле аннотацию можно реализовать, и это несложно. Сонг Гэ написал ее, основываясь на этом рвении. Сегодня я расскажу вам об общем использовании, а затем напишу статью, чтобы представить принцип реализации.
Проект с открытым исходным кодом, адрес проекта:
способ есть
- Клонируйте проект:
git clone https://github.com/lenve/scheduling.git
. - Создайте локальную базу данных с именем
scheduling
библиотека. - Изменить файл конфигурации
src/main/resources/application.yaml
, в основном для изменения имени пользователя и адреса подключения к базе данных. - Стартовый проект.
- доступ через браузер
http://localhost:8080
, вы можете увидеть следующую страницу:
Указывает, что запуск прошел успешно.
Функции
- При запуске проекта он автоматически загрузит из базы данных запланированное задание со статусом 1 и начнет его выполнение, 1 означает запланированное задание в открытом состоянии, а 0 означает запланированное задание в отключенном состоянии.
- Нажмите на страницуДобавить работукнопку, чтобы добавить новое запланированное задание.Если имя компонента, имя метода и параметры метода нового задания совпадают с существующими записями, оно будет рассматриваться как дублирующее задание, и дублирующее задание не будет добавлено.
Страница добавления вакансий выглядит следующим образом:
Здесь задействовано несколько параметров, значения которых следующие:
- Имя компонента: это имя компонента, внедренного в Spring в проекте.В тестовом коде оно начинается с
org/javaboy/scheduling02/service/SchedulingTaskDemo.java
Например. - Имя метода: имя метода в bean-компоненте в параметре 1.
- Параметры метода: параметры метода в параметре 2.
- Cron-выражение: cron-выражение запланированной задачи.
- Статус задания: как включено, так и отключено. Если он включен, запланированная задача начнет выполняться после завершения добавления, если отключена, то просто добавит запись в базу данных.
Добавление задания успешно выполняется следующим образом:
Сообщения об ошибках при добавлении задания выглядят следующим образом:
- Нажмите «Редактировать задание», чтобы изменить различные данные задания:
Это станет эффективным сразу после модификации.
- Щелкните задание для удаления, и вы сможете удалить существующее задание. Если удаленное задание выполняется, сначала остановите задание, а затем удалите его.
- Нажатие кнопки переключения в списке также переключает статус задания.
стек технологий
- SpringBoot
- Jpa
- MySQL
- Spring Job
- Vue
разное
Это обучающая демонстрация, а не законченный проект. Songge опубликует статью, чтобы позже поделиться с вами конкретными идеями реализации.
Хорошо, так много нужно сказать.
Заинтересованные друзья поспешите испытать это: