[java] Quartz Scheduler와 cron 표현식의 관계

Quartz Scheduler는 자바 기반의 스케줄링 라이브러리로, 작업을 지정된 시간에 주기적으로 실행할 수 있도록 도와줍니다. Quartz Scheduler에서 시간을 표현하는 방법 중 가장 널리 사용되는 것은 cron 표현식입니다.

cron 표현식이란?

cron 표현식은 작업을 언제 실행할지를 지정하기 위한 문자열 표기법입니다. cron 표현식은 미리 정의된 패턴을 사용하여 특정 시간에 작업이 실행되도록 예약할 수 있습니다. cron 표현식은 일반적으로 다음과 같은 형식을 가지고 있습니다.

초 (0-59) 분 (0-59) 시 (0-23) 일 (1-31) 월 (1-12) 요일 (0-7 또는 SUN-SAT)

예를 들어, 0 0 12 * * ?은 매월 매일 12시에 작업을 실행하도록 예약한 것입니다.

Quartz Scheduler와 cron 표현식

Quartz Scheduler는 cron 표현식을 사용하여 작업을 예약합니다. Quartz Scheduler의 Trigger 객체를 생성할 때, cron 표현식을 지정하여 해당 표현식에 맞는 시간에 작업이 실행되도록 설정할 수 있습니다.

import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

public class MyJobScheduler {
    public static void main(String[] args) throws Exception {
        SchedulerFactory factory = new StdSchedulerFactory();
        Scheduler scheduler = factory.getScheduler();
        
        JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("myJob").build();
        
        CronTrigger trigger = TriggerBuilder.newTrigger()
            .withIdentity("myTrigger")
            .withSchedule(CronScheduleBuilder.cronSchedule("0 0 12 * * ?"))
            .build();
        
        scheduler.scheduleJob(job, trigger);
        scheduler.start();
    }
}

위 코드에서 CronTrigger 객체를 생성할 때 withSchedule 함수를 사용하여 cron 표현식을 지정하고 있습니다.

참고 자료