集成spring和quartz

来源:互联网 发布:手机淘宝看自己的评价 编辑:程序博客网 时间:2024/06/05 18:19
quartz是个好东西,今天用的版本是quartz-1.7.3,最新的版本貌似是quartz-2.1.4

首先需要写一个工作类,继承自QuartzJobBean,这个类的作用类似于TimerTask
public class MyTimer extends QuartzJobBean {@Overrideprotected void executeInternal(JobExecutionContext context)throws JobExecutionException {System.out.println("gogo");}}

这里的executeInternal()就是会定时执行的方法

然后要写spring的配置文件:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="myTimerJob" class="org.springframework.scheduling.quartz.JobDetailBean"><property name="jobClass" value="xxx.xxx.xxx.MyTimer" /></bean><bean id="myTimerTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"><property name="jobDetail" ref="myTimerJob" /><property name="cronExpression" value="1 * * * * ?" /></bean><bean id="schedulerFactory"class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="myTimerTrigger" /></list></property></bean></beans>

上面分别定义了3个bean,是嵌套的关系

首先schedulerFactory这个bean,类型是org.springframework.scheduling.quartz.SchedulerFactoryBean,是作为一个总的调度,放在triggers列表中的触发器,就会被触发

然后myTimerTrigger这个bean,类型是org.springframework.scheduling.quartz.CronTriggerBean,是为每个定时任务设置触发时间,这样的bean会有多个,与定时任务是一一对应的

最后myTimerJob这个bean,类型是org.springframework.scheduling.quartz.JobDetailBean,也就是实际的TimerTask,这样的bean也会有多个,与Trigger是一一对应的

此外,介绍一下cronExpression的配置方法

例子里面是这样的:
<property name="cronExpression" value="1 * * * * ?" />

这里配置了6个参数,实际上最多可以配7个,不过一般都是配6个

然后第1个的意思是秒,可以写0-59,也可以写*表示任意

第2个是分钟,和秒的配置一样

第3个是小时,可以写0-23,也可以用*表示任意

第4个是天,可以写1-31,可以用*表示任意,当与第6个参数互斥时,也可以写?表示不设置

第5个是月,可以是1-12,也可以写*

第6个是星期几,可以是1-7,也可以写*,当与第4个参数互斥时,也可以写?表示不设置
原创粉丝点击