Using the Quartz Scheduler
참고 http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/scheduling.html
Task
: 업무처리를 위한 단위
Job에서 사용하게 되는 Bean.
MethodInvokingJobDetailFactoryBean 클래스를 이용하여 invoke 시킬 수 있음.
Job
: QuartzJobBean 클래스를 상속 받음.
protected void executeInternal(JobExecutionContext context) 함수를 Override해서 필요한 로직 처리
예) <bean name="printJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="com.tistory.codesnippet.schedule.quartz.PrintJob" /> <property name="jobDataAsMap"> <map> <entry key="printTask" value-ref="printTask" /> </map> </property> </bean>혹은 <bean id="printJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="printTask" /> <property name="targetMethod" value="execute" /> </bean> |
Trigger
: SimpleTriggerBean과 CronTriggerBean가 있음
실행시킬 Job 참조필요.
SimpleTriggerBean은 반복주기, 시작 딜레이 시간을 지정할 수 있음
CronTriggerBean은 cron 문법을 지원함.
예) <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="printJob" /> <property name="repeatInterval" value="5000" /> <property name="startDelay" value="1000" /> </bean> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="printJob" /> <property name="cronExpression" value="0/5 * * * * ?" /> </bean> |
Scheduler
: Trigger를 작동시키는 역활을 함.
Job을 지정해 줄 수 있음.
<bean name="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!-- <property name="jobDetails"> <list> <ref bean="printJob" /> </list> </property> --> <property name="triggers"> <list> <ref bean="simpleTrigger" /> <!-- <ref bean="cronTrigger" /> --> </list> </property> </bean> |
codesnippet-schedule.7z