본문 바로가기
IT/Java

JAVA Spring Boot에서 Quartz를 활용한 간편한 작업 스케줄링

by bamcong 2025. 3. 3.

안녕하세요! 이번 포스팅에서는 Spring Boot 애플리케이션에서 Quartz 라이브러리를 이용해 간편하게 작업을 스케줄링하는 방법에 대해 알아보겠습니다. Quartz는 강력한 작업 스케줄러로, 정기적으로 실행되는 작업을 손쉽게 관리할 수 있습니다.

Quartz란 무엇인가?

Quartz는 Java 기반의 작업 스케줄러로, 다양한 방식으로 작업을 예약하고 관리할 수 있는 기능을 제공합니다. Cron 표현식을 통해 경과 시간에 따라 작업을 설정할 수 있으며, 복잡한 스케줄링도 지원합니다. 예를 들어, 매일 오전 9시에 지정된 작업을 실행할 수 있습니다.

프로젝트 세팅하기

1. Spring Boot 프로젝트 생성

먼저 Spring Initializr를 통해 Spring Boot 프로젝트를 생성합니다. 필요한 의존성은 'Spring Web', 'Quartz Scheduler'를 추가합니다.

Intellij 프로젝트 생성

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 공식 문서를 참고하세요!

Quartz Scheduler Documentation

반응형