首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Spring + Quartz配置范例

2013-09-09 
Spring + Quartz配置实例参考文章【http://www.cnblogs.com/kay/archive/2007/11/02/947372.html】?????????

Spring + Quartz配置实例

参考文章【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容器生命周期进行启动和停止的动作。
配置文件:

<?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>10,15,20,25,30,35,40,45,50,55?*?*?*?*??</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>

要调度的工作类:

public?class?Task{
????public?void?work()?{
????????System.out.println("Quartz的任务调度!");
????}
}

主测试文件:

public?class?QuartzTest?{
????public?static?void?main(String[]?args)?{
????????System.out.println("Test?start.");
????????ApplicationContext?context?=?new?ClassPathXmlApplicationContext("applicationContext.xml");
????????//如果配置文件中将startQuertz?bean的lazy-init设置为false?则不用实例化
????????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这几个包

热点排行