Spring + Quartz配置实例

本文介绍如何利用Spring框架整合Quartz实现定时任务调度,包括配置文件详解、工作类定义及主测试文件示例。Quartz作为强大的任务调度框架,通过Spring的支持能够更便捷地在项目中进行集成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文章【http://www.cnblogs.com/kay/archive/2007/11/02/947372.html
http://www.diybl.com/course/3_program/java/javajs/2008530/118164.html
各种企业应用几乎都会碰到任务调度的需求,就拿论坛来说:每隔半个小时生成精华文章的RSS文件,每天凌晨统计论坛用户的积分排名,每隔30分钟执行锁定用户解锁任务。对于一个典型的MIS系统来说,在每月1号凌晨统计上个月各部门的业务数据生成月报表,每半个小时查询用户是否已经有快到期的待处理业务……,这样的例子俯拾皆是,不胜枚举。

Quartz 在开源任务调度框架中的翘首,它提供了强大任务调度机制,难能可贵的是它同时保持了使用的简单性。Quartz 允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行关联映射。
Spring为创建Quartz的Scheduler、Trigger和JobDetail提供了便利的FactoryBean类,以便能够在Spring 容器中享受注入的好处。此外Spring还提供了一些便利工具类直接将Spring中的Bean包装成合法的任务。Spring进一步降低了使用Quartz的难度,能以更具Spring风格的方式使用Quartz。概括来说它提供了两方面的支持:
1)为Quartz的重要组件类提供更具Bean风格的扩展类;
2)提供创建Scheduler的BeanFactory类,方便在Spring环境下创建对应的组件对象,并结合Spring容器生命周期进行启动和停止的动作。
配置文件:

<? xmlversion = " 1.0 " encoding = " UTF-8 " ?>
<! DOCTYPEbeansPUBLIC " -//SPRING//DTDBEAN//EN " " http://www.springframework.org/dtd/spring-beans.dtd " >

< beans >

<!-- 要调用的工作类 -->
< beanid = " quartzJob " class = " test.Task " ></ bean >
<!-- 定义调用对象和调用对象的方法 -->
< beanid = " jobtask "
class = " org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean " >
<!-- 调用的类 -->
< propertyname = " targetObject " >
< refbean = " quartzJob " />
</ property >
<!-- 调用类中的方法 -->
< propertyname = " targetMethod " >
< value > work </ value >
</ property >
</ bean >
<!-- 定义触发时间 -->
< beanid = " doTime "
class = " org.springframework.scheduling.quartz.CronTriggerBean " >
< propertyname = " jobDetail " >
< refbean = " jobtask " />
</ property >
<!-- cron表达式 -->
< propertyname = " cronExpression " >
< value > 10 , 15 , 20 , 25 , 30 , 35 , 40 , 45 , 50 , 55 * * * * ?</ value >
</ property >
</ bean >
<!-- 总管理类如果将lazy - init = ' false ' 那么容器启动就会执行调度程序 -->
< beanid = " startQuertz " lazy - init = " false " autowire = " no "
class = " org.springframework.scheduling.quartz.SchedulerFactoryBean " >
< propertyname = " triggers " >
< list >
< refbean = " doTime " />
</ list >
</ property >
</ bean >
</ beans >
要调度的工作类:
public class Task{
public void work(){
System.out.println(
" Quartz的任务调度! " );
}
}
主测试文件:
public class QuartzTest{
public static void main(String[]args){
System.out.println(
" Teststart. " );
ApplicationContextcontext
= new ClassPathXmlApplicationContext( " applicationContext.xml " );
// 如果配置文件中将startQuertzbean的lazy-init设置为false则不用实例化
System.out.print( " Testend..\n " );

}

}

注意:项目中需要加载需要加入spring.jar quartz-all-1.6.0.jar log4j-1.2.14.jar commons-collections.jar jta.jar commons-logging.jar这几个包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值