`

spring3集成quartz2

阅读更多
最近项目中要用到quartz 做job,在网上看了些资料,自己做了个小例子
加入quartz包和spring相关包,


spring包这里就没叙说了

job类
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloJob implements Job {
	public static final  Logger log = LoggerFactory.getLogger(HelloJob.class);
	public void execute(JobExecutionContext arg0) throws JobExecutionException {
		long starttime = System.currentTimeMillis();
		System.out.println("*****************job start********************");
		long endtime = System.currentTimeMillis();
		System.out.println("*****************job end 总共耗时:" + (endtime-starttime) + "********************");
	}

}


生成quartz需要的表,在下载的quartz包里有相应的sql




配置bean
<!-- job -->
	<bean id="HelloJob"
		class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
		<property name="durability" value="true" />
		<property name="name">
			<value>HelloJob</value>
		</property>
		<property name="jobClass">
			<value>com.pfms.job.HelloJob</value>
		</property>
		<property name="jobDataAsMap">
			<map>
				<entry key="jobName">
					<value>HelloJob</value>
				</entry>
				<entry key="jobDesc">
					<value>testJob</value>
				</entry>
			</map>
		</property>
	</bean>

	<bean id="cronTrigger"
		class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="HelloJob" />
<!--每分钟的第5秒执行 如1:00:05,1:01:05-->
		<property name="cronExpression" value="5 * * ? * * *" />
	</bean>
	<bean id="schedulerTrigger"
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="cronTrigger" />
			</list>
		</property>
	</bean>



启动项目




说明:Spring3.0不支持Quartz2.0,因为org.quartz.CronTrigger在2.0从class变成了一个interface造成IncompatibleClassChangeError错误:
Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super class
quartz 1.x与2.x区别
quartz 1.x                  quartz 2.x
JobDetailBean             JobDetailFactoryBean
CronTriggerBean           CronTriggerFactoryBean


下面介绍下时间配置表达式
5  *  *   ?  *  *  *
秒 分 小时  日 周  月 年

字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空 1970-2099 , - * /

例子:
0/5 * * * * ? : 每5秒执行一次
“*”字符被用来指定所有的值。如:"*"在分钟的字段域里表示“每分钟”。
“?”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候,它是有用的。看下面的例子你就会明白。
月份中的日期和星期中的日期这两个元素时互斥的一起应该通过设置一个问号来表明不想设置那个字段。
“-”字符被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”。
“,”字符被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”。
“/”字符用于指定增量。如:“0/15”在秒域意思是每分钟的0,15,30和45秒。“5/15”在分钟域表示每小时的5,20,35和50。符号“*”在“/”前面(如:*/10)等价于0在“/”前面(如:0/10)。记住一条本质:表达式的每个数值域都是一个有最大值和最小值的集合,如:秒域和分钟域的集合是0-59,日期域是1-31,月份域是1-12。字符“/”可以帮助你在每个字符域中取相应的数值。如:“7/6”在月份域的时候只有当7月的时候才会触发,并不是表示每个6月。
L是‘last’的省略写法可以表示day-of-month和day-of-week域,但在两个字段中的意思不同,例如day-of-month域中表示一个月的最后一天。如果在day-of-week域表示‘7’或者‘SAT’,如果在day-of-week域中前面加上数字,它表示一个月的最后几天,例如‘6L’就表示一个月的最后一个星期五。
字符“W”只允许日期域出现。这个字符用于指定日期的最近工作日。例如:如果你在日期域中写 “15W”,表示:这个月15号最近的工作日。所以,如果15号是周六,则任务会在14号触发。如果15好是周日,则任务会在周一也就是16号触发。如果是在日期域填写“1W”即使1号是周六,那么任务也只会在下周一,也就是3号触发,“W”字符指定的最近工作日是不能够跨月份的。字符“W”只能配合一个单独的数值使用,不能够是一个数字段,如:1-15W是错误的。
“L”和“W”可以在日期域中联合使用,LW表示这个月最后一周的工作日。
字符“#”只允许在星期域中出现。这个字符用于指定本月的某某天。例如:“6#3”表示本月第三周的星期五(6表示星期五,3表示第三周)。“2#1”表示本月第一周的星期一。“4#5”表示第五周的星期三。
字符“C”允许在日期域和星期域出现。这个字符依靠一个指定的“日历”。也就是说这个表达式的值依赖于相关的“日历”的计算结果,如果没有“日历”关联,则等价于所有包含的“日历”。如:日期域是“5C”表示关联“日历”中第一天,或者这个月开始的第一天的后5天。星期域是“1C”表示关联“日历”中第一天,或者星期的第一天的后1天,也就是周日的后一天(周一)。
2、表达式举例
"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 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发


技术交流群:312740759
  • 大小: 5.2 KB
  • 大小: 43.2 KB
  • 大小: 65.7 KB
分享到:
评论

相关推荐

    spring2与quartz在Web整合

    3. **整合过程**:整合 Spring 2 和 Quartz 需要在 Spring 配置文件中声明 Job 和 Trigger 的 Bean,并指定它们的关联。Spring 可以通过其自身的 JobFactory 来创建 Job 实例,使得 Job 可以利用 Spring 的 DI 功能...

    spring集成quartz集群配置

    首先,理解Spring集成Quartz的核心在于Spring的Job接口和Quartz的Scheduler。Spring提供了`org.springframework.scheduling.quartz.JobDetailBean`来创建Job,`org.springframework.scheduling.quartz....

    最新 Spring 4.2.2 集成 Quartz Scheduler 2.2.2 任务调度示例

    本资源是一个最新 Spring 4.2.2 集成 Quartz Scheduler 2.2.2 的一个简单的 demo,也是博客《最新 Spring 4.2.2 集成 Quartz Scheduler 2.2.2 任务调度示例》的配套示例项目,该博客地址是:...

    spring boot集成quartz定时器

    本文将详细讲解如何在Spring Boot项目中集成Quartz定时器,以及如何利用Spring的依赖注入特性来实现Job。 一、集成Quartz定时器 1. 添加依赖:首先,你需要在Spring Boot项目的`pom.xml`或`build.gradle`文件中...

    spring4.0.3集成quartz支持的扩展jar包

    spring集成quartz支持的扩展jar包,spring版本4.0.3

    Spring 4.2 集成 Quartz2 任务调度示例

    在本文中,我们将深入探讨如何在Spring 4.2.2框架中集成Quartz 2.2.2,实现高效的任务调度。Quartz是一个开源的作业调度框架,它允许开发者安排任务以按照预设的时间间隔运行。而Spring框架是Java企业级应用开发的...

    spring3整合quartz1.8和spring3整合quartz2.2两个版本示例

    - **事务管理**:当 Job 需要在事务环境中执行时,需要确保 Spring 事务管理与 Quartz 的集成正确。 - **错误处理**:合理处理 Job 执行异常,避免影响整个 Scheduler 的运行。 - **资源释放**:应用关闭时,确保...

    spring集成quartz所需文件

    标题 "spring集成quartz所需文件" 指的是将 Spring 框架与 Quartz 进行整合,以利用 Quartz 的定时任务功能。这种集成使得开发者可以在 Spring 环境下方便地管理调度任务,实现灵活的定时任务逻辑。 在描述中提到 ...

    spring 集成quartz 用数据库实现quartz的集群

    【Spring集成Quartz定时任务与数据库实现集群详解】 在企业级应用中,定时任务的管理是必不可少的一部分,Spring框架提供了与Quartz的集成,使得我们可以方便地创建和管理定时任务。Quartz是一款强大的、开放源代码...

    Spring4集成quartz2.2.1

    本文将详细讨论如何在Spring 4中集成Quartz 2.2.1,以及如何将项目打包成可执行的jar或war文件。 首先,我们需要在项目中引入Quartz的依赖。如果你的项目是基于Maven构建的,可以在pom.xml文件中添加以下依赖: ``...

    Spring3.2.3+Quartz2.2 整合配置

    首先,集成Quartz到Spring项目中,我们需要在项目的`pom.xml`或`build.gradle`文件中添加Quartz和Spring的相关依赖。对于Spring 3.2.3,确保引入了如下的Maven依赖: ```xml &lt;groupId&gt;org.springframework ...

    spring+quartz demo

    Spring 提供了与 Quartz 集成的模块,使得在 Spring 应用程序中使用 Quartz 更加便捷,包括 Job 实例的管理、触发器的配置以及对 Quartz Scheduler 的控制。 在这个 "spring+quartz demo" 中,我们可以学习到如何将...

    spring3-quartz1.x

    在集成Quartz时,我们可以将Quartz的Scheduler、Job、Trigger等组件作为Spring的bean来管理,这样可以利用Spring的优势,例如自动初始化、依赖注入、AOP等特性。 2. **Quartz1.8.6简介** Quartz1.8.6是Quartz的一...

    Spring中的Quartz配置-Spring-定时器-java定时器.doc

    Quartz 可以与 Spring 框架集成,以实现任务的定时执行。 Spring 中的 Quartz 配置 在 Spring 中,Quartz 的配置主要通过 XML 文件来实现。我们可以在 Spring 的配置文件中定义 Quartz 的 bean,以便实现任务的...

    Spring2.x集成Quartz调度框架

    **Spring2.x集成Quartz调度框架** 在Java应用开发中,常常需要进行任务调度,例如定时执行某些业务逻辑。Quartz是一款强大的、开源的作业调度框架,它支持复杂的调度策略和集群环境。Spring框架则提供了良好的企业...

    spring3配置quartz定时任务

    在Java开发中,Spring框架是不可或缺的一部分,而Quartz则是一个强大的作业调度库,用于创建、调度和执行作业。本文将详细介绍如何在Spring 3中...这只是一个基础示例,但已经足够让你理解Spring与Quartz的集成方式。

    quartz和spring-quartz

    而Spring-Quartz则是Spring框架对Quartz的集成,它使得在Spring应用中使用Quartz变得更加方便。 Quartz的核心概念包括Job(作业)、Trigger(触发器)和Calendar(日历)。Job是实际要执行的任务,Trigger定义了Job...

    Spring+Quartz2

    在压缩包 "Spring3+Quartz2" 中,可能包含的是一个 Spring 3.x 版本与 Quartz2 结合使用的示例项目,你可以通过解压并运行该项目,学习如何在实际项目中实现类似的功能。记得根据你的具体需求进行适当的修改和配置。

    Spring3.2.4 + Quartz2.2.0集成实例

    Spring3.2.4 + Quartz2.2.0集成实例 可参考http://blog.csdn.net/liangbinny/article/details/17284691

Global site tag (gtag.js) - Google Analytics