안녕하세요! 이번 포스팅에서는 Spring Boot 애플리케이션에서 Quartz 라이브러리를 이용해 간편하게 작업을 스케줄링하는 방법에 대해 알아보겠습니다. Quartz는 강력한 작업 스케줄러로, 정기적으로 실행되는 작업을 손쉽게 관리할 수 있습니다.
Quartz란 무엇인가?
Quartz는 Java 기반의 작업 스케줄러로, 다양한 방식으로 작업을 예약하고 관리할 수 있는 기능을 제공합니다. Cron 표현식을 통해 경과 시간에 따라 작업을 설정할 수 있으며, 복잡한 스케줄링도 지원합니다. 예를 들어, 매일 오전 9시에 지정된 작업을 실행할 수 있습니다.
프로젝트 세팅하기
1. Spring Boot 프로젝트 생성
먼저 Spring Initializr를 통해 Spring Boot 프로젝트를 생성합니다. 필요한 의존성은 'Spring Web', 'Quartz Scheduler'를 추가합니다.
2. Maven 의존성 추가
생성된 프로젝트의 pom.xml 파일에 Quartz 관련 의존성을 추가합니다.
org.springframework.boot
spring-boot-starter-quartz
3. Quartz Job 클래스 작성
Quartz 작업(Job)을 정의하기 위해 Job 인터페이스를 구현하는 클래스를 생성합니다. 이 클래스에서는 실제로 실행할 작업의 내용을 정의합니다.
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class HelloJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("안녕하세요! Quartz Job이 실행되었습니다!");
}
}
JobDetail 및 Trigger 설정하기
Job을 등록하고 트리거를 설정합니다. Spring의 @Scheduled 어노테이션 대신 Quartz의 Scheduler를 사용하여 작업을 예약합니다.
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
@Configuration
public class QuartzConfig {
@Bean
public JobDetail helloJobDetail() {
return JobBuilder.newJob(HelloJob.class)
.withIdentity("helloJob")
.storeDurably()
.build();
}
@Bean
public Trigger helloJobTrigger() {
SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10) // 10초 간격으로 실행
.repeatForever();
return TriggerBuilder.newTrigger()
.forJob(helloJobDetail())
.withIdentity("helloTrigger")
.withSchedule(scheduleBuilder)
.build();
}
@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
SchedulerFactoryBean factory = new SchedulerFactoryBean();
factory.setJobDetails(helloJobDetail());
factory.setTriggers(helloJobTrigger());
return factory;
}
}
애플리케이션 실행하기
프로젝트가 모든 설정을 마쳤다면, Spring Boot 애플리케이션을 실행해보세요. 콘솔에서 "안녕하세요! Quartz Job이 실행되었습니다!"라는 문구가 약 10초마다 출력되는 것을 볼 수 있을 것입니다.
결론
이번 포스팅에서는 Spring Boot에서 Quartz를 사용하여 작업을 간편하게 스케줄링하는 방법에 대해 알아보았습니다. Quartz는 매우 유연하고 강력한 작업 스케줄링 도구로, 다양한 상황에서 유용하게 활용할 수 있습니다.
더 많은 정보를 위해 Quartz 공식 문서를 참고하세요!
'IT > Java' 카테고리의 다른 글
JAVA GSON 소개 (1) | 2025.03.01 |
---|---|
JAVA JSON 라이브러리 구글 GSON 알아보자(Google Gson) (0) | 2020.03.11 |
JAVA HashMap VS LinkedHashMap (차이점, 성능차이, 사용방법) (0) | 2019.07.09 |
JAVA SpringMVC 웹서버로 Google FCM HTTP POST 푸시 보내기 (9) | 2018.12.07 |
JAVA SOAP 요청/응답 (SOAP Request/Response) (3) | 2018.11.09 |