Spring Boot에서 Quartz 스케줄러를 사용하는 방법
Quartz는 고급 스케줄링 기능을 제공하는 라이브러리로, 다양한 작업을 복잡한 스케줄로 실행할 수 있습니다.
여기에서는 Quartz를 Spring Boot 프로젝트에 통합하고 간단한 스케줄링 작업 설정
1. 프로젝트 설정
먼저 Maven 또는 Gradle을 사용하여 Quartz와 Spring Boot를 설정합니다. 여기서는 Maven을 사용한 예제를 제공합니다.
- pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
</dependencies>
2. Quartz 설정
Quartz를 설정하는 클래스를 작성합니다. 이 클래스는 Quartz 스케줄러와 작업을 설정하는 역할을 합니다.
- java
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.CronScheduleBuilder;
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 jobDetail() {
return JobBuilder.newJob(MyJob.class)
.withIdentity("myJob")
.storeDurably()
.build();
}
@Bean
public Trigger trigger(JobDetail jobDetail) {
return TriggerBuilder.newTrigger()
.forJob(jobDetail)
.withIdentity("myTrigger")
.withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?")) // 매 10초마다 실행
.build();
}
@Bean
public SchedulerFactoryBean schedulerFactoryBean(Trigger trigger, JobDetail jobDetail) {
SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean();
schedulerFactory.setJobDetails(jobDetail);
schedulerFactory.setTriggers(trigger);
return schedulerFactory;
}
}
3. Quartz Job 작성
Quartz에서 실행될 작업을 정의하는 클래스를 작성합니다. 이 클래스는 org.quartz.Job 인터페이스를 구현해야 합니다.
- java
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.time.LocalDateTime;
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("Quartz Job executed at: " + LocalDateTime.now());
}
}
4. Spring Boot 애플리케이션 클래스
Spring Boot 애플리케이션 클래스를 작성하여 애플리케이션을 실행합니다.
- java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class QuartzApplication {
public static void main(String[] args) {
SpringApplication.run(QuartzApplication.class, args);
}
}
5. 실행 및 테스트
이제 애플리케이션을 실행하면 MyJob 클래스에 정의된 작업이 매 10초마다 실행되는 것을 볼 수 있습니다. 콘솔에 "Quartz Job executed at: " 메시지가 주기적으로 출력되는 것을 확인할 수 있습니다.
|