1.利用maven导入quartz相关的依赖包
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
2.任务调度的相关配置
<bean id="scheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTriggerBean1" />
<ref bean="cronTriggerBean2" />
</list>
</property>
</bean>
<bean id="quartz1"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.ltmap.platform.protocol.mdm.service.Job1"></property>
</bean>
<bean id="cronTriggerBean1"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="quartz1"></property>
<property name="cronExpression" value=" 0/1 * * * * ? "></property><!-- 每天的0点0分0秒触发
0 0 0 * * ? -->
</bean>
<bean id="quartz2"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.ltmap.platform.protocol.mdm.service.Job2"></property>
</bean>
<bean id="cronTriggerBean2"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="quartz2"></property>
<property name="cronExpression" value=" 0/4 * * * * ? "></property><!-- 每天的0点0分0秒触发
0 0 0 * * ? -->
</bean>
3.编写调度任务执行类
job1
package com.ltmap.platform.protocol.mdm.service;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class Job1 extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
System.out.println("定时任务执行中…");
/**
* 要调度的具体任务
*/
}
}
job2
package com.ltmap.platform.protocol.mdm.service;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class Job2 extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
System.out.println("this is job2");
}
}
4.任务时间配置
表 5.1. 包括了分钟频度的任务计划 Cron 表达式
用法 |
表达式 |
每天的从 5:00 PM 至 5:59 PM 中的每分钟触发 |
0 * 17 * * ? |
每天的从 11:00 PM 至 11:55 PM 中的每五分钟触发 |
0 0/5 23 * * ? |
每天的从 3:00 至 3:55 PM 和 6:00 PM 至 6:55 PM 之中的每五分钟触发 |
0 0/5 15,18 * * ? |
每天的从 5:00 AM 至 5:05 AM 中的每分钟触发 |
0 0-5 5 * * ? |
·日上的 Cron 表达式
表 5.2. 基于日的频度上任务计划的 Cron 表达式
用法 |
表达式 |
每天的 3:00 AM |
0 0 3 * * ? |
每天的 3:00 AM (另一种写法) |
0 0 3 ? * * |
每天的 12:00 PM (中午) |
0 0 12 * * ? |
在 2005 中每天的 10:15 AM |
0 15 10 * * ? 2005 |
·周和月的 Cron 表达式
表 5.3. 基于周和/或月的频度上任务计划的 Cron 表达式
用法 |
表达式 |
在每个周一,二, 三和周四的 10:15 AM |
0 15 10 ? * MON-FRI |
每月15号的 10:15 AM |
0 15 10 15 * ? |
每月最后一天的 10:15 AM |
0 15 10 L * ? |
每月最后一个周五的 10:15 AM |
0 15 10 ? * 6L |
在 2002, 2003, 2004, 和 2005 年中的每月最后一个周五的 10:15 AM |
0 15 10 ? * 6L 2002-2005 |
每月第三个周五的 10:15 AM |
0 15 10 ? * 6#3 |
每月从第一天算起每五天的 12:00 PM (中午) |
0 0 12 1/5 * ? |
每一个 11 月 11 号的 11:11 AM |
0 11 11 11 11 ? |
三月份每个周三的 2:10 PM 和 2:44 PM |
0 10,44 14 ? 3 WED |