Spring整合Quartz有两种方式:
一是通过Spring的JobDetailBean
JobDetailBean的配置如下
<bean name="exampleJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="example.ExampleJob" />
<property name="jobDataAsMap">
<map>
<entry key="timeout" value="5" />
</map>
</property>
</bean>
其中jobClass的Value值指向自己所写的job类,此类必须继承Spring的QuartzJobBean,并重写executeInternal方法,jobDataAsMap中注入的值,即为在executeInternal方法中通过context.getMergedJobDataMap().get方法获得的值。
example.ExampleJob的代码如下
package example;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class ExampleJob extends QuartzJobBean {
// private int timeout;
/**
* Setter called after the ExampleJob is instantiated with the value from
* the JobDetailBean (5)
*/
// public void setTimeout(int timeout) {
// this.timeout = timeout;
// }
@Override
protected void executeInternal(JobExecutionContext context)
throws JobExecutionException {
System.out.println(context.getMergedJobDataMap().get("out"));
System.out.println("executeInternal ............");
}
}
二是通过MethodInvokingJobDetailFactoryBean
MethodInvokingJobDetailFactoryBean的配置如下
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="exampleBusinessObject" />
<property name="targetMethod" value="doIt" />
</bean>
targetObject所注入的即为自己所写的job类,此类可以是普通的java类,不需继承或实现任何接口。targetMethod的值即为job类的内部方法
exampleBusinessObject的代码如下
package example;
public class ExampleBusinessObject {
// properties and collaborators
public void doIt() {
System.out.println("do it ..............");
// do the actual work
}
}
无论是通过上面哪一种方法,都必须为他们建立自己的触发器Trigger,Spring中提供了两种触发器,CronTriggerBean,SimpleTriggerBean,具体可以自由选择用哪种。
两种方式的配置如下
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<!-- see the example of method invoking job above -->
<property name="jobDetail" ref="jobDetail" />
<!-- 10 seconds -->
<property name="startDelay" value="10000" />
<!-- repeat every 50 seconds -->
<property name="repeatInterval" value="50000" />
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="exampleJob" />
<!-- run every morning at 6 AM -->
<property name="cronExpression" value="0 0 6 * * ?" />
</bean>
最后,关键的一步,把上面配置好的触发器注入到SchedulerFactoryBean中去
配置文件如下
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
<ref bean="simpleTrigger" />
</list>
</property>
</bean>
好了,Spring的中的定时任务已经配置好了,现在可以去你的job类里为所欲为了!
ps:Spring的版本的和Quartz的版本问题需要注意,spring 3.X的可以用Quartz2.x,spring2.x的就只能用Quartz1.x的了!切记。。。
分享到:
相关推荐
首先,让我们深入理解Spring整合Quartz的过程。在Spring中,Quartz可以通过以下步骤进行集成: 1. **引入依赖**:在项目的构建文件(如Maven或Gradle)中添加Quartz和Spring相关的依赖。对于Maven,可以在pom.xml...
Spring 整合 Quartz 是一种常见的任务调度解决方案,用于在应用程序中安排和执行周期性的任务。Quartz 是一个功能丰富的开源任务调度库,适用于 Java 平台,尤其适用于 J2EE 和 J2SE 应用。它允许开发人员精确地定义...
本文将深入探讨如何在Spring环境中集成Quartz以实现集群配置,以便于在分布式环境中进行高效的任务调度。 首先,理解Spring集成Quartz的核心在于Spring的Job接口和Quartz的Scheduler。Spring提供了`org.spring...
【Spring集成Quartz定时任务与数据库实现集群详解】 在企业级应用中,定时任务的管理是必不可少的一部分,Spring框架提供了与Quartz的集成,使得我们可以方便地创建和管理定时任务。Quartz是一款强大的、开放源代码...
Spring整合Quartz是一个常见的任务调度解决方案,用于在Java应用程序中执行定时任务。Quartz是一个功能丰富的开源作业调度框架,而Spring则是一个强大的企业级应用开发框架。将两者结合,可以方便地在Spring管理的...
标题 "spring集成quartz所需文件" 指的是将 Spring 框架与 Quartz 进行整合,以利用 Quartz 的定时任务功能。这种集成使得开发者可以在 Spring 环境下方便地管理调度任务,实现灵活的定时任务逻辑。 在描述中提到 ...
Spring整合Quartz 2.2.3是Java开发者在实现定时任务时常用的一种技术组合。Quartz是一款开源的作业调度框架,它允许程序在特定时间执行预定的任务,而Spring则是一个强大的企业级应用开发框架,提供了丰富的依赖注入...
Spring整合Quartz是一款高效的任务调度框架,用于在Java应用程序中定时执行特定任务。Quartz本身支持多种持久化策略,包括使用数据库(JDBC)来存储作业和触发器信息,这使得任务调度信息在系统重启后仍能保留。下面...
1. **Spring与Quartz的整合**:Spring 提供了对Quartz的集成支持,通过`org.springframework.scheduling.quartz`包中的类,如`SchedulerFactoryBean`和`ThreadPoolTaskExecutor`,可以轻松地将Quartz纳入Spring的...
在Spring整合Quartz的过程中,我们需要完成以下步骤: 1. **引入依赖**:在项目的Maven或Gradle配置文件中添加Quartz和Spring相关库的依赖。 2. **配置Quartz**:在Spring的配置文件(如`applicationContext.xml`...
标题“Spring整合Quartz定时发送邮件”涉及到两个主要技术领域:Spring框架和Quartz调度库。这个场景的应用是使用Quartz来安排任务,而Spring则提供了集成环境和邮件服务支持。 首先,Quartz是一个开源的作业调度...
### Spring整合Quartz的方式 #### 1. 配置驱动的方式 这种方式主要是通过XML配置来创建和管理Quartz的Scheduler实例。首先,你需要在Spring的配置文件中引入Quartz的Bean定义,包括`SchedulerFactoryBean`,`...
本资源"Spring整合Quartz后的简单定时任务示例"提供了如何将这两者结合使用的实例,旨在帮助开发者实现基于Spring的定时任务功能。 首先,我们要理解Spring对定时任务的支持。Spring框架通过`@Scheduled`注解提供了...
Spring集成Quartz是一款高效的任务调度框架,用于在Java应用程序中执行计划、周期性的任务。Quartz与Spring的结合,使得我们可以充分利用Spring的依赖注入(DI)和AOP特性,简化了任务调度的复杂性。 首先,Quartz...
### Spring集成Quartz调度框架详解 #### 一、Quartz调度框架概述 Quartz是一个开源的、成熟的作业调度框架,其主要目标是在Java应用程序中提供简单而强大的作业调度能力。Quartz支持作业按时间间隔(如每天、每周...
首先,要在Spring应用中集成Quartz,你需要添加Quartz的依赖库到你的项目中。这通常通过Maven或Gradle的依赖管理来完成。在Maven的pom.xml文件中,你可以加入如下依赖: ```xml <groupId>org.quartz-scheduler ...
Spring整合Quartz定时发送邮件涉及到的关键技术点有: 1. 使用Apache Commons Email库进行邮件发送。 2. 创建Quartz Job,继承Spring提供的`QuartzJobBean`,并在`executeInternal()`方法中执行实际任务。 3. 在...
Spring整合Quartz定时任务是企业级应用中常见的一种任务调度技术,它允许开发者在应用程序中设置定时执行的任务,比如数据同步、报表生成等。Quartz是一个功能强大的开源作业调度框架,而Spring则是一个广泛使用的...