`
renzhelife
  • 浏览: 669828 次
文章分类
社区版块
存档分类
最新评论

Quartz资源及与Spring集成简单使用举例

 
阅读更多
Quartz是一个任务调度框架,任务调度是指按照预先指定好的时间、时间间隔或执行次数来自动执行任务,比如每天早上6:00从控制台上输出 “早上好”。多数的Web项目都具有任务调度的任务,而在java项目中实现任务调度的方式有很多种,这一点在IBM文献《几种任务调度的 Java 实现方法与比较》中已经陈述并举例了。此文简单整理一下资源,并简做介绍其使用及其与Spring的集成。

Quartz官网上你能够找到在线教程、API和实例、jar包等信息。任务调度过程在quartz中牵涉它的两大基本单元,一个是作业(可执行的任务),另一个是触发器。

要定期执行的作业需要实现org.quartz.job接口,我们要执行的code就在execute方法中。而quartz提供了三种可用的触发器,在《理解Quartz触发器>>。针对触发器CronTrigger值得学习一下Corn表达式,它能够帮助我们灵活的配置具体的日程安排。

简单说Corn表达式包括七个字段,分别是秒 分 时 月内日期 月 周内日期 年。其中年字段可以忽略不写,即那一年都执行,而其他字段就指明了具体是哪个月哪一天哪个时间执行。需要着重理解一下月内日期和周内日期,分别指几号和周几,这两个指只需要指定一个值,如果在月内日期指定为1号,在周内日期指定为五,但十月一却是周六,发生冲突。具体corn表达式的参数取值和一些特殊符号(-*/#?WLC)用法参考《Quartz Cron Expression》一文。

在java程序中举一个例子。首先写一个Job类,如下所示:


之后我们写一个java类配置,并启动调度器,此类代码注释也大致说明了启动调度计划的大致步骤,代码如下所示:


此时运行这个java类即可每天执行定点执行咱们的任务了。如果我们的作业很多,而且需要在j2EE项目发布运行后就自定开启调度器而不是像上面需要手动启动,我们该如何做呢。

一个简单的做法可以通过配置web.xml文件,启动服务器时通过初始化servlet来完成启动调度器过程,这个方法的原理应用到quartz与spring集成上,只需要在web.xml文件中配置org.springframework.web.context.ContextLoaderServlet为应用服务器启动时自动运行就可以了。使用spring和quartz集成的好处还有很多。Spring本身具有IOC容器和工厂的作用,这样以来,上述代码中Review类对JobService类的依赖关系以及JobService类对Job接口的依赖都可以屏蔽掉,同时不需要再实际写出Review类,只需要在applicationContext.xml文件中进行一下配置就可以了。同样,这种配置还支持启动多任务,此处只对上面的例子进行改进。

Job类:


applicationContext.xml文件,它包含了上述Review类的功能:

Web.xml文件的配置如下所示,它实现了应用程序服务器启动时自动启动上述配置调度器:

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics