서버가 구동될 때, 코드에 작성된 스케줄을 읽어 해당 시간에 실행하는 방식
pom.xml에서 원하시는 버전의 Quartz 설정을 넣어줍니다.
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>버전 기입</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>버전 기입</version>
</dependency>
해당 xml 파일은 Job, Trigger를 관리하게 됩니다.
Trigger
Trigger란 Job을 실행시키기 위해 시작 시간 및 반복 등등 스케줄에 대한 정보를 담고 있습니다.
아래 2가지 타입으로 사용이 가능합니다.
- cronTrigger
- 복잡한 반복, 즉 상세 한 일정으로 반복을 사용할 경우
ex) 매주 월,수,금 오전 01시 15분에 실행- simpleTrigger
- 간단한 반복
ex) 10분 마다 실행
Job
실행될 작업을 뜻하고 있습니다.
위에서 말하는 작업이란 business logic이거나, 처리를 해야하는 일입니다.
따라서 xml에는 아래와 같이 설정하게 됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="testExcueteJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="실행할 service"/>
</bean>
<bean id="testExcueteTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="testExcueteJob"/>
<property name="cronExpression" value="0 10 16 1/1 * ? *"/>
</bean>
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="testExcueteTrigger"/>
</list>
</property>
</bean>
</bean>
testExcueteJob
는 Job 이름을 결정하고, Job이 실행할 로직은 jobClass
로 해당 value
에 넣어주면 됩니다.
testExcueteTrigger
는 Trigger 이름을 지정하고, 해당 하는 시간에 Job이 실행 될 수 있도록
jobDetail
의 ref
는 Job Name을 적어주시면 됩니다.
scheduler
의 list에 Trigger 이름을 적어주시면 됩니다.