前几天使用到了任务调度框架Quartz,并且和spring进行整合使用,现在在这里做下记录:
1. 首先导入Quartz的jar包,可以去官网下载,若是使用maven的话就直接使用maven导入:
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>1.8.6</version> <!-- 最新版本是1.8.6 --> </dependency>
2. 导入spring的包:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>3.2.4.RELEASE</version> </dependency>
3. 接下来就是实现任务类 ,有两种方式:
3.1第一种方式:
package com.hqhp.quartz; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; public class JobQuartz extends QuartzJobBean { private int timeout; public JobQuartz(){ } /** * Setter called after the ExampleJob is instantiated * with the value from the JobDetailBean (5) */ public void setTimeout(int timeout) { this.timeout = timeout; } protected void executeInternal(JobExecutionContext ctx) throws JobExecutionException { // do the actual work System.out.println("quartz test success...."+timeout); } }
相应的spring中的配置文件代码:
<!-- 第一种方式实现JobDetail --> <bean name="jobQuartzDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <property name="jobClass" value="com.hqhp.quartz.JobQuartz" /> <property name="Durability" value="true" /> <property name="jobDataAsMap"> <map> <entry key="timeout" value="5" /> </map> </property> </bean>
3.2 第二种方式:
package com.hqhp.quartz; public class ExampleBusinessObject { // properties and collaborators public void doIt() { // do the actual work System.out.println("do it ..."); } }
相应的sping的配置文件:
<!-- 第二种方式实现JobDetail --> <bean id="exampleBusinessObject" class="com.hqhp.quartz.ExampleBusinessObject" /> <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="exampleBusinessObject" /> <property name="targetMethod" value="doIt" /> </bean>
4. 开始配置触发器,触发器也有两种方式,和任务类的方式对应:
4.1 第一种方式
<!-- 触发器的一种方式 --> <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"> <!-- see the example of method invoking job above --> <property name="jobDetail" ref="jobQuartzDetail" /> <!-- 5 seconds --> <property name="startDelay" value="5000" /> <!-- repeat every 10 seconds --> <property name="repeatInterval" value="10000" /> </bean>
4.2 第二种方式:
<!-- 触发器第二种方式 --> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="jobDetail" /> <property name="cronExpression" value="0 29 13 * * ?" /> <!-- 每天13:29会执行一次配置的任务 --> </bean>
5. 最后就是把触发器加入到任务列表中:
<bean id='testScheduler' class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="simpleTrigger" /> <ref bean="cronTrigger" /> </list> </property> </bean>
6. 最后说下cronExpression的表达式的参考:
http://www.blogjava.net/javainthink/archive/2006/10/19/76077.html
相关推荐
Quartz 本身就提供了将任务和触发器持久化到数据库中的功能,这样可以解决上述问题。要使用这种方式,开发者需要安装 Quartz 数据库表,并配置 JobStoreTX。 首先,需要安装 Quartz 数据库表。Quartz 包括了所有被...
Quartz与Spring的集成使得在Spring应用中管理任务变得更加容易,可以利用Spring的依赖注入和生命周期管理。 Spring Batch是一个用于处理大量数据的批处理框架。它提供了诸如事务管理、错误处理、读写器和处理器抽象...
在本文中,我们将深入探讨如何在Spring中集成Quartz进行任务调度,并通过一个简单的示例来理解其工作原理。 首先,要在Spring中使用Quartz,你需要将`quartz-all-1.5.2.jar`等相关的Quartz库添加到项目的类路径中。...
以上就是Spring整合Quartz实现定时任务调度的基本流程。在实际开发中,你可能需要根据项目需求对触发规则、任务逻辑、并发控制等方面进行更复杂的配置和设计。同时,Quartz还支持集群部署,可以在多台服务器上实现...
Spring Task是Spring内置的轻量级任务调度器,而Quartz是更强大的第三方调度库,可以在Spring中集成使用。 1. **Spring Task** - **基本概念**:Spring Task是Spring框架的一部分,提供了基本的定时任务调度功能,...
Quartz和Spring整合是企业级应用中常见的任务调度解决方案,Quartz是一个开源的作业调度框架,而Spring则是Java领域广泛使用的轻量级框架。这两者的整合使得开发者可以在Spring管理的bean中灵活地定义和执行定时任务...
将Quartz与Spring整合,可以方便地管理和控制定时任务,同时利用Spring的依赖注入和管理功能,提高代码的可维护性和可测试性。 Quartz的核心概念包括Job、Trigger和Scheduler。Job是实际需要执行的任务,Trigger是...
Quartz和Spring-Quartz是两个在Java世界中广泛使用的定时任务管理框架。Quartz是一个开源的作业调度框架,允许应用程序定义和调度任务在特定时间执行。而Spring-Quartz则是Spring框架对Quartz的集成,它使得在Spring...
Quartz可以集成到Spring中,利用Spring的依赖注入和配置能力,使得任务调度更加简洁和易于维护。 **一、Spring与Quartz的集成** 1. **配置Quartz** 在Spring应用中集成Quartz,首先需要添加Quartz的相关依赖到...
Spring集成Quartz是一款高效的任务调度框架,用于在Java应用程序中执行计划、周期性的任务。Quartz与Spring的结合,使得我们可以充分利用Spring的依赖注入(DI)和AOP特性,简化了任务调度的复杂性。 首先,Quartz...
通过理解和掌握这些知识点,开发者能够有效地在 Spring 2 和 Quartz 之间建立桥梁,实现 Web 应用中的复杂任务调度功能。对于出现问题的整合,开发者可以通过分析源码、查看日志和调试来定位和解决问题,进一步提升...
Quartz和Spring的整合是企业...下载提供的"quartzSpring"压缩包文件,你可以找到示例代码和配置,进一步学习如何在实际项目中实现Quartz和Spring的整合。如果有任何问题,欢迎提问,我将乐意提供更多的帮助和参考资料。
在实际项目中,我们还需要确保正确配置了数据库连接,因为Quartz通常将任务和触发器存储在数据库中。 总的来说,Spring与Quartz的结合使用为开发者提供了强大且灵活的任务调度能力。你可以根据需求设置不同的触发...
在与Spring框架整合后,Quartz能更好地融入到现有的应用架构中,实现更高效的资源管理和任务调度。 首先,我们要理解Quartz的核心概念。`Job`是Quartz中的基本工作单元,它代表一个要执行的任务。而`Trigger`则定义...
通过Spring与Quartz的整合,可以轻松地在Spring应用中管理定时任务,提高代码的可维护性。 总结来说,Quartz是Java中强大的定时任务库,通过它我们可以方便地创建和管理复杂的任务调度,包括但不限于在特定时间点...
Spring框架提供了对任务调度的强大支持,其中Spring Quartz是一个常用的集成解决方案。本篇将深入探讨如何使用Java和Spring Quartz来配置和调度cron任务。 首先,我们需要理解Spring Quartz的核心组件。`Job`接口...
Spring Quartz 是一个强大的任务调度框架,它允许开发者在Java应用程序中定义和执行定时任务。结合Spring框架,可以方便地在企业级应用中实现复杂的时间触发逻辑。本实例提供了可以直接运行的任务调度解决方案,既...
Quartz和SpringBatch是两种在Java开发中广泛使用的框架,Quartz用于任务调度,而SpringBatch则用于批量处理。在大型分布式系统中,结合这两者可以实现强大的定时任务集群功能,尤其是在需要对大量数据进行定时处理的...
将Quartz与Spring集成可以充分利用Spring的IoC(Inversion of Control)和AOP(Aspect-Oriented Programming)特性,使任务调度变得更加灵活和易于管理。这样的集成可以帮助开发者在SSH(Struts、Spring、Hibernate...
在Spring整合Quartz的过程中,首先需要在Spring配置文件中声明Scheduler工厂bean,然后定义Job和Trigger的bean。Spring通过`org.springframework.scheduling.quartz.SchedulerFactoryBean`来创建和管理Quartz的...