使用Spring集成Quartz

Quartz:

Quartz调度包的两个基本单元是作业(Job)和触发器(Trigger)。作业是能够调度的可执行任务,触发器提供了对作业的调度。虽然这两个实体很容易合在一起,但在Quartz中将它们分离开来是有原因的,而且也很有益处。通过把要执行的工作与它的调度分开,Quartz允许在不丢失作业本身或作业的上下文的情况下,修改调度触发器。而且,任何单个的作业都可以有多个触发器与其关联

使用Spring集成Quartz: 本系统使用Spring来集成Quartz。我们只需要在Spring中配置相应的Trigger和Job,而不需要编写任何Java代码,Spring在找到这些bean后会自动启动这些Job。

Spring配置: <bean id="dumbJob" class="org.springframework.scheduling.quartz.JobDetailBean">

<property name="group " value="dumb "/>

<property name="jobClass " value="example.DumbJob "/>

<property name="name" value="dumbJob "/>

</bean>

<bean id="settlementJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<property name="targetObject" ref="settlementBizFacade"/>

<property name="targetMethod" value="doSettlement"/>

<property name="concurrent" value="false"/>

<property name="name" value="settlement"/>

</bean> <bean id="settlementTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

<property name="jobDetail" ref="settlementJob"/>

<!-- run at 23:55 everyday -->

<property name="cronExpression" value="0 55 23 * * ?"/>

</bean>

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

<property name="triggers">

<list> <ref bean="settlementTrigger"/>

</list> </property> <property name="quartzProperties">

<map> <!-- 1 job thread, change this if more jobs added -->

<entry key="org.quartz.threadPool.threadCount" value="1"/>

</map>

</property>

</bean>

首先我们需要配置一个Job,这里有两种方式:一种是为Job创建一个独立的JobClass,然后使用Spring的JobDetailBean配置该Job;另一种是使用MethodInvokingJobDetailFactoryBean指定一个方法,不需要一个单独的JobClass,它需要设置“targetObject”和“targetMethod”,则Trigger触发该Job的时候,目标方法会被调用。这里把“concurrent”设置为“false”,这被调用的方法不会在新线程里运行,而是顺序执行。 接下来我们配置了一个名为“settlementTrigger”的Cron触发器,它定义了settlementJob合适被调用。 最后需要配置的是SchedulerFactoryBean,它负责调度所有的trigger,还可以配置Quartz。因为当前的任务间隔较远,没有频繁执行的要求,所以这里把Quartz的线程数设为“1”

时间: 2024-08-29 23:18:51

使用Spring集成Quartz的相关文章

spring集成quartz

spring集成quartz 注意:出现异常"Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super class" Spring3.0不支持Quartz2.0,因为org.quartz.CronTrigger在2.0从class变成

Spring集成Quartz定时器

<!-- Spring集成Quartz开始 --> <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list>

Quartz学习总结(1)——Spring集成Quartz框架

一.Quartz简介 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序.Jobs可以做成标准的Java组件或 EJBs.Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制.Quartz 允许开发人员根据时间间隔(或天)来调度作业.它实现了作业和触发器的多对多关系,

spring集成quartz实现定时任务

定时器jar引入 <dependency>    <groupId>org.quartz-scheduler</groupId>    <artifactId>quartz</artifactId>    <version>2.3.0</version></dependency> spring配置quartz的xml <beans xmlns="http://www.springframewor

Spring集成Quartz的3种方式

1.使用xml配置方式 Maven依赖 <properties> <!-- spring版本号 --> <spring.version>4.2.2.RELEASE</spring.version> <!-- Quartz的版本 --> </properties> <dependency> <groupId>org.springframework</groupId> <artifactId>

(2)Spring集成Quartz定时任务框架介绍和Cron表达式详解

在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码.使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下面介绍它们集成方法和Cron表达式的详细介绍. 一.增加所依赖的JAR包1.增加Spring的Maven依赖 <dependency> <groupId>org

spring集成Quartz时区问题造成任务晚执行八小时

项目中在Spring中集成了Quartz,配置的每日凌晨执行的定时任务都是到了八点多才执行,经过一番查找,可能是时区问题造成的. 一种解决办法是在JVM启动参数中增加 --Duser.timezone=GMT+08 另一种办法是在配置文件中增加timeZone的配置 改JVM参数的方式,一但项目迁移实施人员可能会忘记改,所以决定再代码里做手脚. 1.获取一个TimeZone,使用java.util.TimeZone.getTimeZone(String ID)获取指定的TimeZone,ID有两

【Spring】Spring集成Quartz

maven引入所需的jar包: <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.2</version> </dependency> <dependency>         <groupId>org.springframework</g

Spring集成Quartz定时器实现定时作业任务

这篇文章有点久远了,记得是第一次出来实习时,大三暑假自己找了一家软件公司实习了很长时间,当时学到很多实践性的东西,这个Quartz就是其中一个,还记得是做OA,一些消息需要定时提醒定时删除,项目框架里也没有,当时经验不足也没接触过这样类似的东西,所以用了整一下午的时间算是基本搞定了吧,今天很有兴致,找出这篇大学时写过的几篇文章分享出来,内容如下: 1. 创建一个定时任务并继承类QuartzJobBean并实现其方法executeInternal(JobExecutionContext conte