Первый проект с использованием фреймворка Quartz

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь использовать фреймворк Quartz для планирования и выполнения простой задачи, которая напоминает пользователю встать, чистить зубы и洗脸.

🎯 Задачи

В этом проекте вы научитесь:

  • Как реализовать интерфейс Job в классе RemindJob для определения задачи, которая должна быть выполнена
  • Как реализовать класс RemindScheduler для планирования и выполнения RemindJob с использованием планировщика Quartz
  • Как написать тестовую функцию для проверки функциональности планирования класса RemindScheduler

🏆 Достижения

После завершения этого проекта вы сможете:

  • Использовать фреймворк Quartz для планирования и выполнения задач
  • Создавать и настраивать экземпляры JobDetail и Trigger для задачи
  • Запускать и останавливать планировщик Quartz
  • Писать тестовые функции для проверки функциональности вашего приложения

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/ConcurrentandNetworkProgrammingGroup(["Concurrent and Network Programming"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java/BasicSyntaxGroup -.-> java/output("Output") java/ProgrammingTechniquesGroup -.-> java/method_overloading("Method Overloading") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/date("Date") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/oop("OOP") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/interface("Interface") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") java/ConcurrentandNetworkProgrammingGroup -.-> java/threads("Threads") subgraph Lab Skills java/output -.-> lab-300366{{"Первый проект с использованием фреймворка Quartz"}} java/method_overloading -.-> lab-300366{{"Первый проект с использованием фреймворка Quartz"}} java/classes_objects -.-> lab-300366{{"Первый проект с использованием фреймворка Quartz"}} java/date -.-> lab-300366{{"Первый проект с использованием фреймворка Quartz"}} java/oop -.-> lab-300366{{"Первый проект с использованием фреймворка Quartz"}} java/interface -.-> lab-300366{{"Первый проект с использованием фреймворка Quartz"}} java/exceptions -.-> lab-300366{{"Первый проект с использованием фреймворка Quartz"}} java/threads -.-> lab-300366{{"Первый проект с использованием фреймворка Quartz"}} end

Реализация класса RemindJob

В этом шаге вы научитесь реализовать класс RemindJob, который реализует интерфейс Job из фреймворка Quartz.

  1. Откройте файл RemindJob.java, расположенный в директории /home/labex/project/QuartzRemind/src/main/java/org/labex.

  2. Реализуйте метод execute() интерфейса org.quartz.Job. Этот метод будет вызываться планировщиком Quartz при выполнении задачи.

@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
    System.out.println("Wake up! Brush your teeth and wash your face!");
    System.out.println("Current system time - " + new Date());
}

Метод execute() должен выводить сообщение напоминания "Wake up! Brush your teeth and wash your face!" и текущее системное время.

✨ Проверить решение и практиковаться

Реализация класса RemindScheduler

В этом шаге вы научитесь реализовать класс RemindScheduler, который планирует и выполняет RemindJob.

  1. Откройте файл RemindScheduler.java, расположенный в директории /home/labex/project/QuartzRemind/src/main/java/org/labex.

  2. Реализуйте метод getJobDetail(), который создает и возвращает экземпляр org.quartz.JobDetail для RemindJob.

public static JobDetail getJobDetail() {
    return JobBuilder.newJob(RemindJob.class)
         .withIdentity("reminderJob", "reminderGroup")
         .build();
}
  1. Реализуйте метод getTrigger(), который создает и возвращает экземпляр org.quartz.Trigger для RemindJob. Триггер будет повторять задачу каждые 2 секунды, 3 раза.
public static Trigger getTrigger() {
    return TriggerBuilder.newTrigger()
         .withIdentity("reminderTrigger", "reminderGroup")
         .startNow()
         .withSchedule(SimpleScheduleBuilder.simpleSchedule()
               .withIntervalInSeconds(2)
               .withRepeatCount(2))
         .build();
}
  1. Реализуйте метод doScheduler(), который планирует и выполняет RemindJob с использованием экземпляра org.quartz.Scheduler.
public void doScheduler() throws SchedulerException, InterruptedException {
    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

    // Запустите планировщик
    scheduler.start();

    System.out.println("Планирование запущено");

    // Планируйте задачу с определенным JobDetail и Trigger
    scheduler.scheduleJob(getJobDetail(), getTrigger());

    // Подождите 10 секунд
    Thread.sleep(10000);

    // Остановите планировщик
    scheduler.shutdown();

    System.out.println("Планирование завершено");
}

Этот метод запускает планировщик, планирует задачу с экземплярами JobDetail и Trigger, ждет 10 секунд, а затем останавливает планировщик.

✨ Проверить решение и практиковаться

Напишите тестовую функцию

В этом шаге вы научитесь писать тестовую функцию для проверки функциональности планирования класса RemindScheduler.

  1. Откройте файл TestQuartz.java, расположенный в директории /home/labex/project/QuartzRemind/src/test/java/org/labex.

  2. Реализуйте метод test(), который создает экземпляр RemindScheduler и вызывает его метод doScheduler().

@Test
public void test() {
    try {
        new RemindScheduler().doScheduler();
    } catch (InterruptedException | SchedulerException e) {
        e.printStackTrace();
    }
}

Этот тестовый метод выполнит функциональность планирования и проверит, что задача выполняется как ожидается.

✨ Проверить решение и практиковаться

Запустите тест

Для запуска теста и проверки проекта следуйте этим шагам:

  1. Откройте терминал и перейдите в директорию /home/labex/project/QuartzRemind.

  2. Запустите следующую команду для выполнения теста:

mvn test

Вы должны увидеть следующий вывод:

Scheduling started
Wake up! Brush your teeth and wash your face!
Current system time - Fri Apr 26 06:54:03 CST 2024
Wake up! Brush your teeth and wash your face!
Current system time - Fri Apr 26 06:54:05 CST 2024
Wake up! Brush your teeth and wash your face!
Current system time - Fri Apr 26 06:54:07 CST 2024
Scheduling completed

Этот вывод показывает, что RemindJob был выполнен три раза, как запланировано классом RemindScheduler.

Поздравляем! Вы успешно завершили проект, реализовав классы RemindJob и RemindScheduler и написав тестовую функцию для проверки функциональности планирования.

✨ Проверить решение и практиковаться

Резюме

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