1 创建定时任务类
package org.lzstone.action
public class LzstoneQuartzTask{
public void execute(){
//执行的定时器任务
}
}
2 注册定时任务类,配置任务计划与任务调度器
在项目的WEB-INF下面创建QuartzConfig.xml文件
<?xml version=
"1.0" encoding=
"UTF-8"?>
<!DOCTYPE beans PUBLIC
"-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--注册定时执行任务实体-->
<bean id=
"lzstoneQuartzTask"
class=
"org.lzstone.action.LzstoneQuartzTask"/>
<!--注册定时器信息-->
<bean id=
"taskInfo"
class=
"org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!--指定要执行的定时任务类 这里是LzstoneQuartzTask-->
<property name=
"targetObject">
<ref local=
"lzstoneQuartzTask"/>
</property>
<!--指定定时器任务类要执行的方法名称 这里是execute-->
<property name=
"targetMethod">
<value>execute</value>
</property>
</bean>
<!--使用SimpleTriggerBean类只能做简单Job与Job之间的执行周期指定,如果需要在指定时间执行,可以使用CronTriggerBean类-->
<!--配置定时器任务的调度器-->
<!-- 在任务的周期指定上,使用cronTriggerBean类来指定。排定Job用SchedulerFactoryBean类。-->
<bean id=
"quartzTrigger"
class=
"org.springframework.scheduling.quartz.CronTriggerBean">
<!--声明要运行的实体-->
<property name=
"jobDetail">
<ref local=
"taskInfo"/></property>
<!--设置运行时间-->
<property name=
"cronExpression">
<value>
0
0
12 * * ?</value>
</property>
</bean>
<!--注册监听器-->
<bean id=
"registerQuartz"
class=
"org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!--注册定时器实体 集合并且开启定时任务-->
<property name=
"triggers">
<list>
<ref local=
"quartzTrigger"/>
</list>
</property>
</bean>
</beans>
3 web项目中的启动设置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/QuartzConfig.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
注意:CronTriggerBean的cronExpression属性指定格式:至少6个时间元素,上面表示每天的15:37-38分执行1次任务。
时间元素(按照顺序):
秒(0-59):
分(0-59):
小时(0-23):
每月第几天(1-31):
月(1-12或JAN-DEC):
每星期第几天(1-7或SUN-SAT):年(1970-2099):
其中:不用设置的用”?”.
(1) 每月第几天和每星期第几天是互斥的,两个只能设置1个。如果有好几个时间点,可以使用”,”符号,例如:”0 0 10,12,14 * * ?”表示每天的10时,12时,14时执行Job.
(2) 对于连续时间可以使用”-”符号。例如:”0 10,12,14 1-15 * ?”表示每月的1到15日10时,12时,14时执行Job.
(3) 时间格式的年可以不用制定。例如”0 0 10,12,14 ? MON 2006”表示2006年每星期一的10时,12时,14时执行Job.
一些定时参数意义
0 0/30 0/1 * * ? 代表每天每30分钟运行一次
0 0/3 0/1 * * ? 代表每天每3分钟运行一次
0 11 23 * * ? 代表每天晚上23:11运行一次
参考:ssh 配置Spring对Quartz的支持, ssh + mysql + quartz, SSH中Spring Quartz定时器的用法