一、前期准备
spring.jar,quartz.jar,commons-logging-1.0.4.jar
二、具体步骤
1、 编写业务类,该类继承了org.quartz.Job,主要的逻辑在execute方法中编写
2、配置spring的applicationContext-timetask.xml文件
2.1配置任务JobDetailBean
2.2配置触发器CronTriggerBean
2.3配置调度器 SchedulerFactoryBean
三、实例
1、web.xml
<?xml version="1.0"encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<!-- 设置Spring容器加载配置文件路径-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
<!-- 加载Spring容器配置-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
2、TimeTask.java、TimeTask2.java
public class TimeTask implements org.quartz.Job{
public voidperform(){
//业务逻辑
System.out.println("定时任务1开始执行----现在的时间是--"+newDate());
}
@Override
public void execute(JobExecutionContext arg0)throws JobExecutionException {
// TODO Auto-generated method stub
perform();
}
}
public class TimeTask2 implements org.quartz.Job{
public voidperform(){
//业务逻辑
System.out.println("定时任务2开始执行----现在的时间是--"+newDate());
}
@Override
public void execute(JobExecutionContext arg0)throws JobExecutionException {
// TODO Auto-generated method stub
perform();
}
}
3、applicationContext-timetask.xml
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
<!--
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"":/spring-beans.dtd">
-->
<beans>
<bean name="task1"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass"value="com.base.timetask.TimeTask"/>
</bean>
<bean name="task2"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass"value="com.base.timetask.TimeTask2"/>
</bean>
<!-- 触发器 -->
<bean id="cronTrigger1"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- 指向我们的任务-->
<property name="jobDetail" ref="task1"/>
<!--每隔1分钟执行一次-->
<property name="cronExpression" value="0 */1 * * *?" />
</bean>
<bean id="cronTrigger2"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<!-- 指向我们的任务-->
<property name="jobDetail" ref="task2"/>
<!--每周日23:59:59执行一次-->
<property name="cronExpression" value="59 59 23 ? *SUN" />
</bean>
<!-- 调度器 -->
<bean
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<propertyname="triggers">
<list>
<!-- 触发器列表-->
<ref bean="cronTrigger1"/>
<ref bean="cronTrigger2"/>
</list>
</property>
</bean>
</beans>
说明:
1)Cron表达式的格式:秒 分 时 日 月 周 年(可选)。
字段名 允许的值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日 1-31 , - * ? / L W C
月 1-12orJAN-DEC , - * /
周几 1-7orSUN-SAT , - * ? / L C #
年(可选字段) empty,1970-2099 , - * /
“?”字符:表示不确定的值
“,”字符:指定数个值
“-”字符:指定一个值的范围
“/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m
“L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X
“W”字符:指定离给定日期最近的工作日(周一到周五)
“#”字符:表示该月第几个周X。6#3表示该月第3个周五
2)Cron表达式范例:
每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?