今天在解决项目的一个问题的时候(后期维护),发现项目中有用到Spring配置Quartz,花了点时间去熟悉了一下:
1. Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz。
2. 驱动工作流:比如,如果新创建的流程任务需要在2小时内处理完,则在2小时后Quartz会检查订单是否成功处理。如果没有处理,则Quartz会依据工作流定义的规则来对订单进行处理,销毁它,或者进行其他处理。
3. 系统维护工作:比如,在每个工作日的固定时间将RDBMS中的内容导出为XML文件。
下面是项目中用到的Spring配置信息:
<?xml version="1.0"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean name="confirFeedback" class="com.test.service.FeedbackManager">
<property name="feedback" ref="feedbackService" />
</bean>
<bean id="confirFeedbackJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="confirFeedback" />
<property name="targetMethod" value="doIt" />
<property name="concurrent" value="false" />
</bean>
<bean id="confirFeedbackTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<!-- see the example of method invoking job above -->
<property name="jobDetail" ref="confirFeedbackJob" />
<!-- 10 seconds -->
<property name="startDelay" value="10000" />
<!-- repeat every 5 minutes -->
<property name="repeatInterval" value="600000" />
</bean>
<bean name="autoHostDownloadService" class="com.test.service.AutoHostDownloadService" lazy-init="true">
<property name="hostDownloadService" ref="hostDownloadService" />
<property name="hostDownloadAlertService" ref="hostDownloadAlertService" />
<property name="type" value="1" />
</bean>
<bean id="autoHostDownloadJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="autoHostDownloadService" />
<property name="targetMethod" value="work" />
<property name="concurrent" value="false" />
</bean>
<bean id="autoHostDownloadTrigger1" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="autoHostDownloadJob" />
<!-- every five minutes for test -->
<!-- <property name="cronExpression" value="0 0/5 * * * ?" /> -->
<!-- 9:55 AM in every day -->
<!-- <property name="cronExpression" value="0 55 9 * * ?" /> -->
<!-- 9:55 AM from Mondy to Friday -->
<property name="cronExpression" value="0 55 9 ? * MON-FRI" />
</bean>
<bean id="autoHostDownloadTrigger2" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="autoHostDownloadJob" />
<!-- 15:25 AM in every day -->
<!-- <property name="cronExpression" value="0 25 15 * * ?" /> -->
<!-- 15:25 AM from Mondy to Friday -->
<property name="cronExpression" value="0 25 15 ? * MON-FRI" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="confirFeedbackTrigger" />
<ref bean="autoHostDownloadTrigger1" />
<ref bean="autoHostDownloadTrigger2" />
</list>
</property>
<property name="waitForJobsToCompleteOnShutdown" value="true" />
</bean>
</beans>
其中cronExpression的表达式说明如下:
表达式意义
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
FeedBackManager代码
package test;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.test.service.IFeedbackService;
public class FeedbackManager {
protected final Log log = LogFactory.getLog(this.getClass());
private IFeedbackService feedback;
public void doIt() {
feedback.feedbackTest1(true);
feedback.feedbackTest2(true);
feedback.feedbackTest3(true);
feedback.feedbackTest4(true);
feedback.feedbackTest5(true);
}
public void setFeedback(IFeedbackService feedback) {
this.feedback = feedback;
}
}
【参考文章】
1. http://developer.51cto.com/art/200906/130436.htm
2. http://developer.51cto.com/art/200906/131888.htm
分享到:
相关推荐
SpringQuartz是一个强大的任务调度框架,它在Java应用程序中用于自动化执行特定任务,如定时生成文件、统计数据或执行后台清理工作。Quartz是开源的,具有高度灵活的调度功能,能够根据预定义的时间表触发任务,同时...
标题中的“Spring Quartz 表达式在线生成器”是指一个工具,它可以帮助开发者方便地创建和测试Spring集成Quartz库时所需的定时任务表达式。Quartz是一个强大的、完全开源的作业调度框架,常用于Java应用中执行定时...
Spring Quartz是Spring框架与Quartz任务调度库的集成,它为开发者提供了在Spring应用中进行任务调度的强大功能。Quartz是一个开源的作业调度框架,能够处理执行周期性任务的需求。在Java环境中,Spring Quartz使得...
在Java开发中,Spring框架与Quartz库的结合使用能够帮助开发者实现强大的定时任务功能。本文将详细解析“spring quartz定时任务demo”这个项目,它提供了实现Java定时任务的实例,便于快速理解和应用。 首先,...
Spring Quartz定时任务是Java开发中常见的一种任务调度框架,它结合了Spring的优秀特性与Quartz的灵活性,使得开发者能够方便地在应用中实现定时任务的管理。在本压缩包中,包含的是`log4j-1.2.14.jar`这个日志处理...
Spring 和 Quartz 是两个在 Java 开发中非常重要的框架,它们分别用于处理依赖注入和任务调度。Spring 是一个全面的后端开发框架,提供了一系列服务,包括但不限于:对象管理、AOP(面向切面编程)、MVC(模型-视图-...
**Spring Quartz Demo** Spring Quartz Demo 是一个用于演示如何在Spring框架中集成Quartz调度器的实例。这个项目展示了如何配置Spring来管理和执行定时任务,利用Quartz的强大功能来实现应用程序的自动化作业调度...
Spring 和 Quartz 是两个在 Java 开发中非常重要的框架。Spring 是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等众多功能,极大地简化了Java应用的开发。而Quartz则是一...
Spring Quartz 是一个强大的任务调度框架,它允许开发者在Java应用中安排复杂的定时任务。Quartz 是一个开源项目,提供了一套全面的API,用于创建、调度、执行和管理作业。结合Spring框架,Spring Quartz 提供了更...
【Spring + Quartz 框架整合详解】 Spring 和 Quartz 是两个在 Java 开发领域中非常重要的框架。Spring 是一个全面的、开源的应用框架,提供依赖注入(DI)、面向切面编程(AOP)以及用于简化企业级应用开发的其他...
Spring Quartz 1.8.x 是一个基于Java的开源任务调度框架,它允许开发者在应用程序中定义定时任务。这个版本是Spring对Quartz Scheduler的一个集成,Quartz是一个强大的、完全可配置的作业调度库,用于执行计划任务。...
Spring Quartz 是一个强大的任务调度框架,它允许开发者在Java应用中安排和执行重复或定时的任务。Quartz 表达式是用于定义任务执行时间的一种语言,它可以精确地控制任务何时运行。Spring集成Quartz,提供了更方便...
在IT行业中,动态加载属性文件和Spring Quartz的整合应用是一个重要的技术话题,特别是在构建大型、分布式和可扩展的系统时。下面将详细讲解这两个概念及其相互间的应用。 首先,我们来了解一下动态加载属性文件。...
Spring Quartz 动态配置时间 Spring Quartz 是一个功能强大的任务调度框架,广泛应用于 Java 企业级应用程序中。其中一个重要的功能便是动态配置时间,触发相应的任务。在本文中,我们将讨论如何使用 Spring Quartz...
Spring Quartz 是一个集成Quartz定时任务框架与Spring的开源项目,它使得在Spring应用中配置和管理定时任务变得更加便捷。Quartz是Java平台上的一个强大、完全可移植的作业调度库,可以用来创建复杂的调度任务,而...
在多应用服务器负载均衡环境下,Spring Quartz定时任务的重复执行问题是一个常见的挑战。Spring Quartz是一个强大的、开源的作业调度框架,允许开发者定义和执行复杂的定时任务。然而,当多个服务器实例并行运行时,...
Spring Quartz 定时器示例(Web工程版),欢迎下载。
Quartz和Spring-Quartz是两个在Java世界中广泛使用的定时任务管理框架。Quartz是一个开源的作业调度框架,允许应用程序定义和调度任务在特定时间执行。而Spring-Quartz则是Spring框架对Quartz的集成,它使得在Spring...
在Spring框架中集成Quartz库可以实现强大的定时任务管理功能。Quartz是一个开源的作业调度框架,它允许程序创建和管理任务,以便在特定时间自动执行。Spring通过其优秀的依赖注入(DI)和AOP(面向切面编程)特性,...
Spring Quartz是一款广泛应用于Java环境下的任务调度框架,它与Spring框架深度集成,使得在Spring应用中配置和管理定时任务变得非常便捷。本项目提供了一套完整的Spring Quartz定时作业的实现,包括任务、触发器和...