`
xaocaotanghui
  • 浏览: 56314 次
  • 性别: Icon_minigender_1
  • 来自: 广西
文章分类
社区版块
存档分类
最新评论

Spring整合Quartz

 
阅读更多

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的过程。在Spring中,Quartz可以通过以下步骤进行集成: 1. **引入依赖**:在项目的构建文件(如Maven或Gradle)中添加Quartz和Spring相关的依赖。对于Maven,可以在pom.xml...

    spring整合quartz文档

    Spring 整合 Quartz 是一种常见的任务调度解决方案,用于在应用程序中安排和执行周期性的任务。Quartz 是一个功能丰富的开源任务调度库,适用于 Java 平台,尤其适用于 J2EE 和 J2SE 应用。它允许开发人员精确地定义...

    spring集成quartz集群配置

    本文将深入探讨如何在Spring环境中集成Quartz以实现集群配置,以便于在分布式环境中进行高效的任务调度。 首先,理解Spring集成Quartz的核心在于Spring的Job接口和Quartz的Scheduler。Spring提供了`org.spring...

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

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

    spring整合quartz的简单成功案例

    Spring整合Quartz是一个常见的任务调度解决方案,用于在Java应用程序中执行定时任务。Quartz是一个功能丰富的开源作业调度框架,而Spring则是一个强大的企业级应用开发框架。将两者结合,可以方便地在Spring管理的...

    spring集成quartz所需文件

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

    Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置

    Spring整合Quartz 2.2.3是Java开发者在实现定时任务时常用的一种技术组合。Quartz是一款开源的作业调度框架,它允许程序在特定时间执行预定的任务,而Spring则是一个强大的企业级应用开发框架,提供了丰富的依赖注入...

    spring整合quartz使用jdbc存储

    Spring整合Quartz是一款高效的任务调度框架,用于在Java应用程序中定时执行特定任务。Quartz本身支持多种持久化策略,包括使用数据库(JDBC)来存储作业和触发器信息,这使得任务调度信息在系统重启后仍能保留。下面...

    spring+quartz使用jar包

    1. **Spring与Quartz的整合**:Spring 提供了对Quartz的集成支持,通过`org.springframework.scheduling.quartz`包中的类,如`SchedulerFactoryBean`和`ThreadPoolTaskExecutor`,可以轻松地将Quartz纳入Spring的...

    spring整合quartz动态定时任务demo-spring-quartz-demo.zip

    在Spring整合Quartz的过程中,我们需要完成以下步骤: 1. **引入依赖**:在项目的Maven或Gradle配置文件中添加Quartz和Spring相关库的依赖。 2. **配置Quartz**:在Spring的配置文件(如`applicationContext.xml`...

    Spring整合Quartz定时发送邮件

    标题“Spring整合Quartz定时发送邮件”涉及到两个主要技术领域:Spring框架和Quartz调度库。这个场景的应用是使用Quartz来安排任务,而Spring则提供了集成环境和邮件服务支持。 首先,Quartz是一个开源的作业调度...

    spring整合quartz两种方式以及spring自带定时任务使用

    ### Spring整合Quartz的方式 #### 1. 配置驱动的方式 这种方式主要是通过XML配置来创建和管理Quartz的Scheduler实例。首先,你需要在Spring的配置文件中引入Quartz的Bean定义,包括`SchedulerFactoryBean`,`...

    Spring整合Quartz后的简单定时任务示例

    本资源"Spring整合Quartz后的简单定时任务示例"提供了如何将这两者结合使用的实例,旨在帮助开发者实现基于Spring的定时任务功能。 首先,我们要理解Spring对定时任务的支持。Spring框架通过`@Scheduled`注解提供了...

    spring集成quartz 任务调度

    Spring集成Quartz是一款高效的任务调度框架,用于在Java应用程序中执行计划、周期性的任务。Quartz与Spring的结合,使得我们可以充分利用Spring的依赖注入(DI)和AOP特性,简化了任务调度的复杂性。 首先,Quartz...

    Spring集成Quartz调度框架.pdf

    ### Spring集成Quartz调度框架详解 #### 一、Quartz调度框架概述 Quartz是一个开源的、成熟的作业调度框架,其主要目标是在Java应用程序中提供简单而强大的作业调度能力。Quartz支持作业按时间间隔(如每天、每周...

    Spring集成Quartz的代码示例

    首先,要在Spring应用中集成Quartz,你需要添加Quartz的依赖库到你的项目中。这通常通过Maven或Gradle的依赖管理来完成。在Maven的pom.xml文件中,你可以加入如下依赖: ```xml &lt;groupId&gt;org.quartz-scheduler ...

    spring整合quartz定时发送邮件

    Spring整合Quartz定时发送邮件涉及到的关键技术点有: 1. 使用Apache Commons Email库进行邮件发送。 2. 创建Quartz Job,继承Spring提供的`QuartzJobBean`,并在`executeInternal()`方法中执行实际任务。 3. 在...

    spring整合quartz定时任务

    Spring整合Quartz定时任务是企业级应用中常见的一种任务调度技术,它允许开发者在应用程序中设置定时执行的任务,比如数据同步、报表生成等。Quartz是一个功能强大的开源作业调度框架,而Spring则是一个广泛使用的...

Global site tag (gtag.js) - Google Analytics