`

Spring集成Quartz定时任务

阅读更多

原文:http://stevex.blog.51cto.com/4300375/1351980

           http://shmilyaw-hotmail-com.iteye.com/blog/2169047

          http://jingyan.baidu.com/article/0f5fb099cc244d6d8234ea6b.html

 

Spring最大的能耐之一就是提供对流行框架的无缝集成,Quartz作为Java实现的工业标准级别的定时任务调度器,Spring对其提供了无缝的集成,并大大简化了开发工作,这是使用Spring比较爽的地方之一。

 

一个任务调度器最基本的三个元素是

  • Job(or Task):需要定时处理的事情

  • Trigger: 事件触发时间点(一次性的、固定周期性的、像Linux Cron Jobs 灵活配置的)

  • Scheduler: 调度器

 

Job与Trigger是一对一的关系,Scheduler与Trigger是一对多的关系。

先看一个Spring配置这三个元素的示例:

   <!-- 定时加载的目标类 -->

<bean id="fixedRateTask" class="com.stevex.demo.FixedRateTask"></bean>
 
    <bean id="fixedTimeTask" class="com.stevex.demo.FixedTimeTask"></bean>
    <!-- 定时器任务配置 -->
    <bean id="job1"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="fixedRateTask"></property>
        <property name="targetMethod" value="doSth"></property>
        <property name="concurrent" value="false"></property><!-- 不能并发作业,当SimpleTrigger时,是第1次任务完成后,立即执行第2次任务;当CronTrigger时,则必须要设定的间隔时间点后才立即执行 -->
    </bean>
    <bean id="job2"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="fixedTimeTask"></property>
        <property name="targetMethod" value="doSth"></property>
    </bean>
 
    <!-- 配置定时器时间间隔 -->
    <bean id="simpleTrigger"
        class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
        <property name="jobDetail" ref="job1" />
        <property name="startDelay" value="0" /> <!--单位毫秒 -->
        <property name="repeatInterval" value="60000" /> <!--单位毫秒 -->
    </bean>
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="job2" />
        <property name="cronExpression" value="0 2 15 * * ?" />
    </bean>
 
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="simpleTrigger" />
                <ref bean="cronTrigger" />
            </list>
        </property>
    </bean>

Quartz的Job对应类为JobDetail,Spring为简化开发提供了工厂包装类MethodInvokingJobDetailFactoryBean类,当然开发人员还是可以自己实现JobDetail的,可以简单通过继承QuartzJobBean实现

类MethodInvokingJobDetailFactoryBean类有concurrent属性默认值为true,即作业可并发调度,可以将其设置为false如果不允许作业被并发调度。

 

Quartz提供两种Trigger,一是SimpleTrigger提供周期性定时触发器,Spring的对工厂类为SimpleTriggerFactoryBean(注:SimpleTriggerBean不支持Quartz2以上版本,已经被SimpleTriggerFactoryBean替代);一是CronTrigger提供像Linux Cron Jobs那样的复杂触发器,触发时间点使用Cron表达式定义,Cron表达式语法可以参考Quartz官方文档,Spring的对应工厂类为CronTriggerFactoryBean(注:CronTriggerBean不支持Quartz2以上版本,已经被CronTriggerFactoryBean替代)。

Quartz的Scheduler对应类为Scheduler,Spring对应工厂类为SchedulerFactoryBean

完整路径类名列表如下:

org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean
org.springframework.scheduling.quartz.QuartzJobBean
org.springframework.scheduling.quartz.SimpleTriggerFactoryBean
org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerFactoryBean
org.springframework.scheduling.quartz.CronTriggerBean
org.springframework.scheduling.quartz.SchedulerFactoryBean

 

Spring同时提供对Quartz的TriggerListenerJobListener的支持,这类似AOP编程,可以在任务执行前后进行检查等工作,通过简单的属性配置可实现。

 

      一个maven的工程,其类型依然是archetype-quickstart。唯一不同的地方在于我们引入更多spring的库,其pom.xml文件内容如下:

<dependency>  

    <groupId>org.quartz-scheduler</groupId>  

    <artifactId>quartz</artifactId>  

    <version>1.0.0</version>  

</dependency>  

就可以试试了

 

 

分享到:
评论

相关推荐

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

    Spring集成Quartz定时任务框架是Java开发中常用的一种任务调度工具,它可以帮助开发者在特定时间执行重复或一次性任务。Quartz作为一个开源的作业调度框架,提供了丰富的API来创建、调度和管理作业。本文将深入探讨...

    Spring集成Quartz定时任务框架介绍.docx

    ### Spring集成Quartz定时任务框架介绍 #### 一、引言 在现代JavaEE应用程序开发过程中,定时任务是一项常见的需求。这些任务可能包括但不限于:每天固定时间生成报表、定期清理缓存、定时发送邮件提醒等。传统的...

    spring整合quartz定时任务调度

    2. **配置Quartz**:在Spring的配置文件(如applicationContext.xml)中,声明Quartz的相关bean,包括`SchedulerFactoryBean`,它是Quartz与Spring集成的关键: ```xml &lt;bean id="schedulerFactoryBean" class="org....

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

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

    spring3配置quartz定时任务

    总结,通过以上步骤,我们就成功地在Spring 3中配置了Quartz定时任务,实现了每10秒执行一次的任务。在实际应用中,你可以根据需求定义更复杂的作业和触发器,以及使用Quartz的其他高级特性,如集群支持、持久化作业...

    spring-quartz定时任务小实例

    本实例将探讨如何在Spring框架中集成Quartz,创建并运行一个简单的定时任务。以下是你需要知道的关键知识点: 1. **Quartz简介**:Quartz是开源的作业调度库,可以用来创建、调度和执行计划任务。它支持cron表达式...

    springboot2.3集成quartz定时任务持久化数据库,支持集群

    在本文中,我们将深入探讨如何在Spring Boot 2.3版本中集成Quartz定时任务,并实现其持久化到数据库,以便支持集群环境。这个过程的关键在于配置Quartz Scheduler,设置数据库连接,以及确保任务在多节点环境中能够...

    spring+quartz动态定时任务创建 +mybatis

    在Spring中整合Quartz,我们可以利用Spring的管理能力,如bean的生命周期管理和事务管理,来更方便地创建和管理定时任务。 **Spring+Quartz动态定时任务创建** 将Spring与Quartz结合,我们可以方便地在运行时动态...

    Spring 框架自带定时任务和Quartz定时任务

    与Spring集成后,可以使用Spring提供的标签来简化Quartz的配置,使得整个任务调度更加方便。 总结来说,定时任务是开发者常用的一种工具,它的实现方式多样,从简单的Java Timer到强大的Quartz框架都有涉及。Spring...

    spring quartz定时任务demo

    Spring集成Quartz,使得定时任务的管理变得更加方便和灵活。 在“spring quartz定时任务demo”中,你将找到以下关键组成部分: 1. **quartz.jar**:这是Quartz库的主jar文件,包含了所有必要的类和资源,用于在...

    Spring+Quartz定时任务学习文档+实例+jar包

    首先,Spring集成Quartz主要通过Spring的TaskExecution和TaskScheduling模块,这使得我们可以利用Spring的依赖注入和AOP特性来更好地管理和控制定时任务。在Spring中配置Quartz,我们通常需要以下几个步骤: 1. ...

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

    集成Quartz到Spring的过程中,主要涉及以下步骤: 1. 添加依赖:确保项目中引入了Spring和Quartz的相关库,包括`spring-context-support`和`quartz`。 2. 配置Scheduler:在Spring的配置文件中,使用`...

    SpringBoot集成Quartz定时任务

    SpringBoot集成Quartz定时任务(包含对任务的添加、暂停、删除、继续等)

    Spring+Quartz 从数据库中获取定时任务和定时时间,动态实现对定时任务的增删改查

    Spring框架结合Quartz库,提供了一种强大而灵活的方式来管理这些定时任务。本项目旨在演示如何利用Spring和Quartz从数据库中动态加载定时任务,并实现对它们的增删改查功能。以下是关于这个主题的详细知识讲解。 ...

    spring中quartz定时任务实例及配置说明

    总结起来,Spring中的Quartz定时任务配置涉及到创建Job Bean、定义Job Detail Bean来指定执行方法,以及设置Cron Trigger Bean来控制执行时机。同时,还需要配置Quartz的属性文件来满足特定的应用需求。正确理解和...

    spring2.0 Quartz 执行每天定时任务 普通普是执行任务

    在Spring中集成Quartz,可以利用Spring的IoC容器管理作业和触发器,使得配置和管理变得更加简单。 要在Spring 2.0中使用Quartz执行每天定时任务,你需要按照以下步骤进行: 1. 引入依赖:在项目中添加Quartz的库...

    spring注解Quartz定时执行功能

    在Spring框架中集成Quartz库可以实现强大的定时任务管理功能。Quartz是一个开源的作业调度框架,它允许程序创建和管理任务,以便在特定时间自动执行。Spring通过其优秀的依赖注入(DI)和AOP(面向切面编程)特性,...

    Spring Quartz定时任务 jar包

    Spring Quartz定时任务jar包是Java开发中用于实现定时任务调度的一种解决方案。Quartz是一个开源的作业调度框架,它允许程序创建、调度和执行作业,而Spring框架则为Quartz提供了良好的整合,使得在Spring应用中配置...

    spring+quartz定时任务

    Spring与Quartz的集成主要基于Spring的`TaskExecution`和`TaskScheduling`模块,它允许我们以声明式的方式配置定时任务,同时也支持编程式的任务调度。以下将详细介绍如何利用Spring和Quartz实现多任务的定时功能。 ...

    spring+springMVC+mybatis+quartz动态定时任务创建

    在IT行业中,构建高效、可扩展的Web应用是至关重要的,而"spring+springMVC+mybatis+quartz动态定时任务创建"就是一个常见的技术栈,用于实现这样的目标。这个组合充分利用了各组件的优势,提供了强大的后端服务支持...

Global site tag (gtag.js) - Google Analytics