소개
이 프로젝트에서는 Quartz 프레임워크를 사용하여 사용자에게 기상, 양치질, 세수를 상기시키는 간단한 작업을 예약하고 실행하는 방법을 배우게 됩니다.
🎯 과제
이 프로젝트에서 다음을 배우게 됩니다:
- 실행해야 하는 작업을 정의하기 위해
RemindJob클래스에서Job인터페이스를 구현하는 방법 - Quartz Scheduler 를 사용하여
RemindJob을 예약하고 실행하기 위해RemindScheduler클래스를 구현하는 방법 RemindScheduler클래스의 예약 기능을 확인하기 위한 테스트 함수를 작성하는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
- Quartz 프레임워크를 사용하여 작업을 예약하고 실행할 수 있습니다.
- 작업에 대한
JobDetail및Trigger인스턴스를 생성하고 구성할 수 있습니다. - Quartz Scheduler 를 시작하고 종료할 수 있습니다.
- 애플리케이션의 기능을 확인하기 위한 테스트 함수를 작성할 수 있습니다.
RemindJob 클래스 구현
이 단계에서는 Quartz 프레임워크의 Job 인터페이스를 구현하는 RemindJob 클래스를 구현하는 방법을 배우게 됩니다.
/home/labex/project/QuartzRemind/src/main/java/org/labex디렉토리에 있는RemindJob.java파일을 엽니다.org.quartz.Job인터페이스의execute()메서드를 구현합니다. 이 메서드는 작업이 실행될 때 Quartz Scheduler 에 의해 호출됩니다.
@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 클래스 구현
이 단계에서는 RemindJob을 예약하고 실행하는 RemindScheduler 클래스를 구현하는 방법을 배우게 됩니다.
/home/labex/project/QuartzRemind/src/main/java/org/labex디렉토리에 있는RemindScheduler.java파일을 엽니다.RemindJob에 대한org.quartz.JobDetail인스턴스를 생성하고 반환하는getJobDetail()메서드를 구현합니다.
public static JobDetail getJobDetail() {
return JobBuilder.newJob(RemindJob.class)
.withIdentity("reminderJob", "reminderGroup")
.build();
}
RemindJob에 대한org.quartz.Trigger인스턴스를 생성하고 반환하는getTrigger()메서드를 구현합니다. 트리거는 2 초마다 3 번 작업을 반복합니다.
public static Trigger getTrigger() {
return TriggerBuilder.newTrigger()
.withIdentity("reminderTrigger", "reminderGroup")
.startNow()
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(2)
.withRepeatCount(2))
.build();
}
org.quartz.Scheduler인스턴스를 사용하여RemindJob을 예약하고 실행하는doScheduler()메서드를 구현합니다.
public void doScheduler() throws SchedulerException, InterruptedException {
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// Start the scheduler
scheduler.start();
System.out.println("Scheduling started");
// Schedule the job with the defined JobDetail and Trigger
scheduler.scheduleJob(getJobDetail(), getTrigger());
// Sleep for 10 seconds
Thread.sleep(10000);
// Shutdown the scheduler
scheduler.shutdown();
System.out.println("Scheduling completed");
}
이 메서드는 스케줄러를 시작하고, JobDetail 및 Trigger 인스턴스를 사용하여 작업을 예약하고, 10 초 동안 대기한 다음 스케줄러를 종료합니다.
테스트 함수 작성
이 단계에서는 RemindScheduler 클래스의 스케줄링 기능을 검증하기 위한 테스트 함수를 작성하는 방법을 배우게 됩니다.
/home/labex/project/QuartzRemind/src/test/java/org/labex디렉토리에 있는TestQuartz.java파일을 엽니다.RemindScheduler의 인스턴스를 생성하고doScheduler()메서드를 호출하는test()메서드를 구현합니다.
@Test
public void test() {
try {
new RemindScheduler().doScheduler();
} catch (InterruptedException | SchedulerException e) {
e.printStackTrace();
}
}
이 테스트 메서드는 스케줄링 기능을 실행하고 작업이 예상대로 실행되는지 확인합니다.
테스트 실행
테스트를 실행하고 프로젝트를 검증하려면 다음 단계를 따르세요.
터미널을 열고
/home/labex/project/QuartzRemind디렉토리로 이동합니다.다음 명령을 실행하여 테스트를 실행합니다.
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 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



