代码下载地址:http://www.zuidaima.com/share/1787232442715136.htm
原文:Spring结合java Quartz配置实例代码
各种企业应用几乎都会碰到任务调度的需求,就拿论坛来说:每隔半个小时生成精华文章的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容器生命周期进行启动和停止的动作。
配置文件:
- <?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=" quartzJob " class=" test.Task "></bean>
- <!-- 定义调用对象和调用对象的方法 -->
- <bean id=" jobtask "
- class=" org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean ">
- <!-- 调用的类 -->
- <property name=" targetObject ">
- <ref bean=" quartzJob " />
- </property>
- <!-- 调用类中的方法 -->
- <property name=" targetMethod ">
- <value> work </value>
- </property>
- </bean>
- <!-- 定义触发时间 -->
- <bean id=" doTime "
- class=" org.springframework.scheduling.quartz.CronTriggerBean ">
- <property name=" jobDetail ">
- <ref bean=" jobtask " />
- </property>
- <!-- cron表达式 -->
- <property name=" cronExpression ">
- <value> , , , , , , , , , * * * * ?</value>
- </property>
- </bean>
- <!-- 总管理类 如果将lazy - init=' false ' 那么容器启动就会执行调度程序 -->
- <bean id=" startQuertz " lazy - init=" false " autowire=" no "
- class=" org.springframework.scheduling.quartz.SchedulerFactoryBean ">
- <property name=" triggers ">
- <list>
- <ref bean= " doTime " />
- </list>
- </property>
- </bean>
- </beans>
要调度的工作类:
- package com.zuidaima.quartz;
- public class Task{
- public void work() {
- System.out.println( " Quartz的任务调度! " );
- }
- }
主测试文件:
- package com.zuidaima.quartz;
- public class QuartzTest {
- public static void main(String[] args) {
- System.out.println( " Test start. " );
- ApplicationContext context= new ClassPathXmlApplicationContext( " applicationContext.xml " );
-
- System.out.print( " Test end..\n " );
- }
- }
注意:项目中需要加载需要加入spring.jar quartz-all-1.6.0.jar log4j-1.2.14.jar commons-collections.jar jta.jar commons-logging.jar这几个包