`
tangwenchao86
  • 浏览: 378708 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Spring Quartz定时器

 
阅读更多
      
       Spring Quartz可以通过两种方式来调度程序:一是使用Spring提供的 MethodInvokingJobDetailFactoryBean 代理类,Quartz通过该代理类直接调度任务类的某个函数;二是任务类继承并实现Quartz接口,Quartz通过该接口进行调度。

        先说说这个MethodInvokingJobDetailFactoryBean 代理类吧。由Quartz直接调度任务类的某个接口,那么,业务类是不必进行任何修改的。我们的业务类大概如下:



public class LoopVZZJZ {

    @SuppressWarnings( { "unchecked", "finally" })
	public void loopServiceExpired() {

		//业务逻辑代码
         }

}




配置如下:

第一步,在Spring配置文件中增加本业务类
­
<bean name="loopVZZJZManage" autowire="byName" class="com.sitechasia.xinnet.agent.serv.service.impl.LoopVZZJZ"></bean>­


第二步,定义任务。在Spring配置文件中配置代理类MethodInvokingJobDetailFactoryBean,定义任务的详细信息。

­
<!-- 服务到期轮询 -->
    <!--定义定时执行testQuarz 这个bean中的sayHello()方法-->
    <bean id="loopServiceExpired_methodVH"   class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject">
            <ref bean="loopVZZJZManage" />
        </property>
        <property name="targetMethod">
            <value>loopServiceExpired</value>
        </property>
    </bean>­


这个配置告诉Spring,我们的任务是执行id为loopVZZJZManage的bean中的loopServiceExpired方法。其中参数concurrent告诉Spring,不要并发运行这个任务。
­
第三步,配置一个触发器。在Spring配置文件中配置触发器类CronTriggerBean 。

­
 <!--触发器的bean的设置,在这里我们设置了我们要触发的jobDetail是哪个。这里我们定义了要触发的jobDetail是helloworldTask,即触发器去触发哪个bean..并且我们还定义了触发的时间:每天5:17pm-->
   <bean id="loopServiceExpiredTimeVH"
        class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <ref bean="loopServiceExpired_methodVH" />
        </property>
        <property name="cronExpression">
            <!-- 关键在配置此表达式 -->
            <value>0 0 1 1 * ? </value><!-- 从左到右分别是:秒(0-59) 分(0-59) 时(0-23) 日期(1-31) 月份(1-12) 星期(1-7) -->
        </property>
    </bean>



触发器将告诉Quartz两件事:在何时触发任务、触发哪个任务。其中属性参数cronExpression为 调度时间,格式和unix上的crontab类似,具体见下表1。“0 0 1 1 * ?”表示每月1日凌晨1点运行。其中问号表示忽略该位置(星期)上的值。属性参数jobDetail指向具体的任务bean:loopServiceExpired_methodVH。如果你有多个任务,每个任务的触发时间都不一样,则你可以在此配置多个不同的触发器。


再说说第二种方式吧:
第一步,LoopVZZJZ是要进行小小的修改



public class LoopVZZJZ implements org.quartz.Job { //继承quartz 的job接口
{


    //实现job接口的execute函数,在其中简单调用perform()函数就可以了。
    public void execute(org.quartz.JobExecutionContext context){ //执行报表统计入口函数
       loopServiceExpired()
    }
    //其它的保持不变。


    @SuppressWarnings( { "unchecked", "finally" })
	public void loopServiceExpired() {

		//业务逻辑代码
         }

}





第二步,定义任务。在Spring配置文件中配置如下任务的详细信息。


­
<bean name=" loopServiceExpired" class= "org.springframework.scheduling.quartz.JobDetailBean">
    <property name="jobClass" value="com.sitechasia.xinnet.agent.serv.service.impl.LoopVZZJZ" />
</bean>
­
此配置告诉Quartz,我们的任务类的名字为LoopVZZJZ。在定时触发时,Quartz会利用该类名来创建任务的实例,并执行该实例的execute方法。
­
第三、第四步与第一种的调度方式相应的步骤一样。
­
spring的配置文件如下:
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"   
"http://www.springframework.org/dtd/spring-beans.dtd">  
<beans>  
­   
<!-- 我们的任务 -->  
<bean name="loopServiceExpired" class= "org.springframework.scheduling.quartz.JobDetailBean">  
<property name="jobClass" value="com.sitechasia.xinnet.agent.serv.service.impl.LoopVZZJZ" />  
</bean>  
­   
<!-- 触发器 -->  
<bean id="cronTrigger" class= "org.springframework.scheduling.quartz.CronTriggerBean">  
<!-- 指向我们的任务 -->  
<property name="jobDetail" ref="loopServiceExpired" />  
<!-- 每月1日凌晨1点运行 -->  
<property name="cronExpression" value="0 0 1 1 * ?" />  
</bean>  
­   
<!-- 调度器 -->  
<bean class= "org.springframework.scheduling.quartz.SchedulerFactoryBean">  
<property name="triggers">  
<list><!-- 触发器列表-->  
<ref bean="cronTrigger" />  
</list>  
</property>  
</bean>  
</beans>  




参考文章:http://yangxianjiangg.iteye.com/blog/876111
分享到:
评论
1 楼 kiss007wk 2012-05-29  
     

相关推荐

    Spring Quartz 定时器示例(Web工程版)

    Spring Quartz 定时器示例(Web工程版),欢迎下载。

    Spring Quartz定时器的jar包

    Spring Quartz定时器是Java开发中常用的一个任务调度框架,它结合了Spring框架的强大功能与Quartz的灵活性,使得开发者能够方便地在应用中实现定时任务。在这个压缩包中,包含了三个核心的jar文件:`quartz-all-...

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

    Spring 中的 Quartz 配置-Spring 定时器-java 定时器 在 Spring 框架中,Quartz 是一个非常流行的开源作业调度器,可以实现任务的定时执行。在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java ...

    简单实现Spring Quartz定时器

    Spring Quartz定时器是一种在Java应用中实现定时任务的流行框架,它允许开发者精确地调度任务执行。本篇文章将深入探讨如何在Spring框架中简单实现Quartz定时器,并结合源码和工具来帮助理解其工作原理。 首先,让...

    spring quartz定时器的简单配置和使用

    本文将详细介绍如何在Spring项目中集成Quartz定时器,并通过一个简单的示例来进行演示。 #### 一、环境准备 为了能够顺利地运行示例代码,我们需要准备以下必要的依赖库: - `jta-1.1.jar`:用于事务管理。 - `...

    Spring Quartz 定时器示例(Java工程版)

    Spring Quartz 是一个强大的任务调度框架,它允许开发者在Java应用程序中定义定时任务。这个示例提供了在Spring框架中集成Quartz的详细步骤,适合Java工程的实现。下面将详细介绍Spring与Quartz结合使用的相关知识点...

    Spring Quartz 定时器

    这篇博客“Spring Quartz 定时器”很可能是探讨如何将Quartz集成到Spring应用中,以便利用其强大的定时任务功能。 首先,我们来看一下Spring与Quartz的结合。Spring通过`org.springframework.scheduling.quartz`包...

    spring quartz定时器支持的jar包

    在Spring中集成Quartz,首先需要在项目的类路径下添加这三个jar包,然后通过Spring的配置文件来声明Quartz的相关bean。你可以定义`SchedulerFactoryBean`来创建调度器,`JobDetailBean`来定义作业,以及`...

    SpringQuartz定时器的配置[参照].pdf

    然后,配置Spring的XML文件来设置定时器。在配置中,你需要定义`JobDetailBean`来指定任务类,并通过`CronTriggerBean`来设定调度规则。例如: ```xml &lt;bean name="userTimelineQuartz" class="org.springframework...

    SpringQuartz定时器的配置[归类].pdf

    Spring Quartz 是一个集成Quartz定时任务框架的Spring模块,它为开发者提供了在Spring环境中便捷配置和管理定时任务的能力。Quartz作为一个强大且功能丰富的任务调度框架,能够灵活地定义任务的执行时间表,并且可以...

    定时器的配置文件(两种方式:springmvc自带定时,Quartz与spring结合的定时)

    本篇文章将详细讲解两种在Spring MVC框架中实现定时任务的方法:Spring MVC自带的定时器以及Quartz与Spring的集成。 首先,我们来看看Spring MVC自带的定时任务。Spring MVC作为Spring框架的一个模块,主要处理HTTP...

    Spring-quartz实现定时器(含代码)

    本文将深入探讨如何使用Spring整合Quartz来实现定时器,并提供相关代码示例。 首先,理解Spring框架。Spring是一个开源的Java平台,它提供了全面的企业级应用程序开发解决方案,包括依赖注入(DI)、面向切面编程...

    java Spring OpenSymphony的Quartz定时器的时间设置

    在Java Spring框架中,开发者有多种选择来实现定时任务的功能,其中最为流行的两种方式分别是使用Java自带的`Timer`类以及OpenSymphony的Quartz定时器。本文将重点探讨Quartz定时器的配置与使用,尤其是其时间设置的...

    使用spring的quartz定时器要用到的jar包

    首先,要使用Spring的Quartz定时器,你需要确保引入了以下核心的jar包: 1. `quartz.jar`:这是Quartz的核心库,包含了Quartz的调度器、作业、触发器等核心组件。 2. `spring-context-support.jar`:Spring框架提供...

    spring boot集成quartz定时器

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

    quartz定时器源码jar包下载

    作为一个专业的IT行业大师,我很高兴为你解析Quartz定时器的核心概念、功能以及如何通过源码学习。 Quartz定时器允许开发者创建、调度和管理任务,这些任务可以是简单的函数调用或者复杂的业务流程。它支持多种调度...

    spring之quartz定时器

    《Spring与Quartz定时器深度解析》 在Java开发领域,Spring框架因其强大的功能和灵活性而备受推崇。其中,Spring对任务调度的支持是其一大亮点,尤其与Quartz的集成,使得开发者能够方便地实现定时任务。Quartz是一...

    spring java 定时器 执行两次 quartz

    在Spring应用中添加Quartz支持,你需要在`pom.xml`或`build.gradle`文件中引入Quartz的依赖,比如`quartz-all.jar`。接着,在Spring的配置文件(如`applicationContext.xml`)中,定义一个`SchedulerFactoryBean`来...

    spring和quartz的定时器的启动和停止例子

    本篇将深入探讨如何在Spring中启动和停止Quartz定时器。 首先,我们需要理解Spring和Quartz的基本概念。Spring是一个强大的Java企业级应用开发框架,它提供了依赖注入(DI)和面向切面编程(AOP)等核心特性。而...

Global site tag (gtag.js) - Google Analytics