最近弄了个Quartz定时调度的例子,不是很难,但也写出来来分享一下,由于本人一直在用Struts 2.1.8 +Spring2.5+Hibernate3(SSH2)做开发,所以这个实例也是基于SSH2的,以及所导入的JAR也是基于SSH2 的,网上有很多人说
用Spring2.5做会出错,但是我这里是一切正常。OK,看实例。
首先,准备相关jar库文件:
一个是quartz-all-1.6.5.jar
一个是spring.jar
特别是后面这个spring核心包,在我之前做的SSH2框架里是没有导入这个包的,因为没有用到,但是在使用Quartz时一定要导入这个包,Quartz的部分操作依赖于这个包。我为此郁闷了老半天。
相关下载地址在网上比较难找,我不记得上次是怎么下到的了,好像是从CSDN吧,现在直接打包在项目里提供给大家吧,当然,这是一种不好的习惯,大家不要学我啊。嘻嘻~~~
1、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
WEB-INF/classes/applicationContext-*.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
在web.xml中,其实Quartz只需要和Sping相关的配置就可以了,我这里多配置了Struts 2的。这个不影响。
2、applicationContext-struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- 要调用的工作类 -->
<bean id="quartzJob" class="org.yzsoft.quartz.test.Test"></bean>
<!-- 定义调用对象和调用对象的方法 -->
<bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject">
<ref bean="quartzJob"/>
</property>
<!-- 调用类中的方法 -->
<property name="targetMethod">
<value>test</value>
</property>
</bean>
<!-- 定义触发时间 -->
<bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="jobtask"/>
</property>
<!-- cron表达式 -->
<property name="cronExpression">
<!-- 每隔2秒执行一次-->
<value>0/2 * * * * ?</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>
这个配置文件就是Quartz的主要配置文件,里面定义了定时调度的调度对象、调度控制和调度时间,其实核心的配置就这些。用到多的就是cron表达式,用来定义触发时间。
我也在网上找了一些常用的cron表达式,用的时候网上搜索一下,很好找的。
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分每分触发 |
0 0/5 14 * * ? |
每天下午的 2点到2点59分(整点开始,每隔5分触发) |
0 0/5 14,18 * * ? |
每天下午的 2点到2点59分(整点开始,每隔5分触发) 每天下午的 18点到18点59分(整点开始,每隔5分触发)
|
0 0-5 14 * * ? |
每天下午的 2点到2点05分每分触发 |
0 10,44 14 ? 3 WED |
3月分每周三下午的 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 ? * 6L 2002-2005 |
从2002年到2005年每月最后一周的星期五的10点15分触发 |
0 15 10 ? * 6#3 |
每月的第三周的星期五开始触发 |
0 0 12 1/5 * ? |
每月的第一个中午开始每隔5天触发一次 |
0 11 11 11 11 ? |
每年的11月11号 11点11分触发(光棍节) |
我们先写一个测试类测试一下看看:
3、Test.java
/**
* @author 小敏
*2012-10-12 下午02:54:16
*/
package org.yzsoft.quartz.test;
/**
* @author 小敏 创建时间: 2012-10-12 下午02:54:16
*
*/
public class Test {
public void test() {
System.out.println("123541");
}
}
很简单的一个测试类,运行后我们可以看到,控制台输出了我们的测试信息:
123541
123541
123541
123541
123541
123541
这就表示我们定时调度执行成功了。
定时调度作为一个组件可以应用在很多方面,比如说工作流中的定时插数据管理考勤、定时数据备份以及各种系统的业务需要,
这里只作一个最简单的应用,其实Quartz还可以自己定义quartz.properties和quartz_reminder.xml等配置文件,看具体业务需求,如各位有需要可以参考一下这方面的文档和教程。
Quartz还有很多高级的功能实现 ,也许我们现在用的冰山一角都不到,但还是觉得,技术的东西很多 ,我们不可能每一种都学完都用完,取其所长,为我所用,就足够了。
最后 ,附上整个项目源码。
分享到:
相关推荐
在这个"quartz定时调度完整实例"中,我们将深入理解Quartz的工作原理和如何在项目中实际应用。 1. **Quartz简介** - Quartz是Cron-like和Calendar-based作业调度的Java实现,它允许开发人员在应用程序中定义、安排...
总之,Spring Quartz定时调度jar包为开发者提供了强大的定时任务管理能力,无论是简单的一次性任务还是复杂的周期性任务,都可以轻松处理。通过Spring的管理,任务的创建和维护变得更加灵活和易于测试。在实际开发中...
.NET中的Quartz是一个强大的、完全开源的作业调度框架,它为开发者提供了在应用程序中创建和管理定时任务的能力。Quartz可以被集成到任何Java应用程序中,无论是简单的应用程序还是复杂的多服务器集群环境。在这个...
Quartz 提供了一套丰富的 API 和支持,可以方便地与 Spring 框架集成,实现灵活的定时任务调度。 在 Spring 中集成 Quartz,首先需要创建一个 Java 类作为定时任务的执行体,例如 `MyJob` 类。这个类通常包含一个...
这个压缩包“quartz动态定时调度完整代码”提供了使用Quartz进行动态任务调度的示例代码和相关资源。 在Quartz中,核心概念包括Scheduler(调度器)、Job(任务)和Trigger(触发器)。Scheduler是整个调度系统的...
这正是“quartz定时调度器动态修改时间不用配置文件”这一主题的核心内容。 首先,理解Quartz的基本概念是很重要的。Quartz通过Job(任务)和Trigger(触发器)两个核心组件来实现任务调度。Job是实际要执行的任务...
**Spring+Quartz定时调度详解** 在Java世界中,实现定时任务调度是非常常见的需求,Spring框架结合Quartz库提供了一种高效且灵活的解决方案。本文将深入探讨Spring与Quartz的整合,以及如何利用它们来创建和管理...
Spring Quartz实例提供了灵活的任务调度能力,适用于各种业务场景,如定期数据同步、定时发送邮件等。通过上述步骤,你可以创建自己的定时任务,并根据项目需求调整触发策略。这个实例包含了完整的配置和示例代码,...
Quartz定时调度是一种广泛应用于Java环境中的任务调度框架,它允许开发者精确地安排任务执行时间。结合Spring框架,可以方便地在Spring应用中集成和管理定时任务,使得应用程序能够自动执行周期性的业务逻辑。 首先...
Spring框架作为Java领域广泛使用的轻量级框架,提供了与第三方库Quartz的整合,使得开发者能够轻松地在Spring应用中实现复杂的定时任务调度。Quartz是一款开源的作业调度框架,支持丰富的调度策略,可以满足各种定时...
Quartz.NET是一个强大的开源作业调度框架,用于在.NET环境中创建和执行定时任务。它提供了高度灵活的调度功能,使得开发者可以轻松地定义和控制任务的执行时间。在"Quartz.net作业调度自定义定时执行任务多任务执行...
通过以上步骤,你就成功地在Spring应用中整合了Quartz定时任务。在实际开发中,你可能还需要根据项目需求调整Quartz的配置,比如设置线程池大小、任务持久化等。同时,`QuartzStudy`这个文件名可能包含了关于Quartz...
总结起来,Spring中的Quartz定时任务配置涉及到创建Job Bean、定义Job Detail Bean来指定执行方法,以及设置Cron Trigger Bean来控制执行时机。同时,还需要配置Quartz的属性文件来满足特定的应用需求。正确理解和...
结合使用Quartz.NET和TopShelf,我们可以构建一个在Windows服务中运行的定时任务调度系统。 Quartz.NET的特性包括: 1. **灵活的调度**:Quartz.NET支持多种调度模式,如简单触发器、cron触发器,可以按照精确时间...
Spring Quartz 是一个强大的任务调度框架,它允许开发者在Java应用中定义和执行定时任务。本实例将探讨如何在Spring框架中集成Quartz,创建并运行一个简单的定时任务。以下是你需要知道的关键知识点: 1. **Quartz...
采用Quartz.NET开源作业调度框架,实现简单的定时任务。 配合Topshelf.NET,直接安装Windows服务。
Quartz定时任务调度是Java平台上广泛使用的开源作业调度框架,它允许开发者定义并执行复杂的调度任务,例如定期执行某些业务逻辑或系统维护操作。在基于Web的开发环境中,Quartz可以很好地集成到Spring等框架中,...
通过学习这些实例,开发者不仅可以了解Quartz的基本用法,还能掌握如何根据业务需求定制调度策略,提高应用的自动化程度和效率。在实际开发中,Quartz常用于实现定时任务,如定期备份、清理过期数据、发送提醒通知等...
Quartz定时调度是一种在特定时间执行特定任务的强大工具,它被广泛应用于各种系统中,用于自动化周期性任务。Spring框架集成了Quartz,使得在Java应用程序中实现定时调度变得更加便捷。下面将详细介绍如何使用Spring...
【Quartz定时任务】是Java领域的一个强大任务调度框架,但在C#中也有相应的实现,如标题所示,这里讨论的是C#控制台应用中使用Quartz.NET进行定时任务的实现。Quartz.NET允许开发者在应用程序中安排任务在特定时间...