참조 : http://www.onjava.com/pub/a/onjava/2004/03/10/quartz.html?page=1

필요한 dependency

        <dependency>
            <groupId>quartz</groupId>
            <artifactId>quartz</artifactId>
            <version>1.5.2</version>
        </dependency>

Quartz의 핵심 라이브러리

- Job : 작업을 정의할 때는 이 인터페이스를 구현하고 execute 메소드를 구현해 주어야 합니다.
- SchedulerFactory
    - StdSchedulerFactory : 클래스패스에 quartz.properties 파일을 먹고 삽니다. 프로퍼티 파일의 이름이 이와 같지 않다면, 생성자에 직접 이름을 세팅해 줍니다.
- Scheduler : 스케쥴 팩토리에서 얻어 옵니다. JobDetail과 Trigger를 가지고 스케쥴을 정할 수 있습니다.
- JobDetail : 매번 Job의 객체를 만들지 않고, JobDetail을 사용합니다.
- Trigger : 작업을 언제 실행할 지 정의합니다.
    - SimpleTrigger : interval time, repeat times 등을 설정할 수 있습니다.
    - CronTrigger : Linux의 cron 하고 비슷하게, 특정 시간이 되면 발동하게 해줍니다.

    public static void main(String[] args) {
        try {
            SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
            Scheduler sched = schedFact.getScheduler();
            sched.start();
           
            JobDetail jobDetail = new JobDetail("ipNotify", "SLT", IpNotifier.class);
//            SimpleTrigger trigger = new SimpleTrigger("ipNotify", "SLT");
//            trigger.setRepeatInterval(1l);
//            trigger.setRepeatCount(100);
            CronTrigger trigger = new CronTrigger("ipNotify", "SLT");
            trigger.setCronExpression("* 0,30 * * * ?");
           
            sched.scheduleJob(jobDetail, trigger);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

두 종류의 트리거 중에서 저는 CronTrigger가 더 편한 것 같습니다. SimpleTrigger가 무제한 반복할 수 있는 설정을 어떻게 하는지 모르겠어서 말이죠. 덕분에 cron 설정을 공부했습니다.

초 분 시 날 달 주
http://quartz.sourceforge.net/javadoc/org/quartz/CronTrigger.html