一、核心概念Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可。
1、Job表示一个工作,要执行的具体内容。此接口中只有一个方法void execute(JobExecutionContext context)
2、JobDetailJobDetail表示一个具体的可执行的调度程序,Job是这个可执行程调度程序所要执行的内容,另外JobDetail还包含了这个任务调度的方案和策略。
3、Trigger代表一个触发器。
4、Scheduler代表一个调度容器,一个调度容器中可以注册多个JobDetail和Trigger。当Trigger与JobDetail组合,就可以被Scheduler容器调度了。
当JobDetail和Trigger在scheduler容器上注册后,形成了装配好的作业(JobDetail和Trigger所组成的一对儿),就可以伴随容器启动而调度执行了
实现步骤
1、制定任务信息 bean
① 设置执行对象
② 设置执行对象中对应的执行方法
③ 是否可以同步执行
2、制定任务执行时机(执行触发器) bean
2.1、简单触发器(SimpleTrigger)
① 设置任务详细
② 设置任务延迟执行时间
③ 设置任务执行频率
2.2、任务触发器(CronTrigger)
① 设置任务详细
② 设置执行时机(cronExpression)
cronExpression:秒 分 时 日 月 周 年(可选)
3、设置任务调度工厂 bean
设置触发器
<!-- 1、制定任务详细信息 -->
<bean id="compJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 设置执行对象 -->
<property name="targetObject" ref="complainService"></property>
<!-- 设置执行对象中对应的执行方法 -->
<property name="targetMethod" value="autoDeal"></property>
<!-- 是否可以同步执行;不可同步执行 -->
<property name="concurrent" value="false"></property>
</bean>
<!-- 2、制定任务执行时机(任务执行触发器) -->
<bean id="complainCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- 设置任务详细信息 -->
<property name="jobDetail" ref="complainJobDetail"></property>
<!-- 设置任务执行时间点,cronExpression: 在每月的月底下午的3点每分钟的第10秒执行任务 -->
<property name="cronExpression" value="10 * 15 L * ?"></property>
</bean>
<!-- 3、设置调度工厂 -->
<bean id="complainScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="complainCronTrigger"/>
</list>
</property>
</bean>