`
santino_chen
  • 浏览: 7094 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring+Quartz完成作业调度

    博客分类:
  • Java
阅读更多

简介

Quartz是一个Java的定时任务框架,使用它可以方便地实现计划任务,即在某个时间或是每隔一定时间运行一个任务。Quartz的核心是Job/JobDetail,Trigger和Scheduler。Job/JobDetail即要执行的任务,可以通过实现Job中的execute方法来指定任务的具体操作。Trigger描述出发Job执行的时间触发规则,用于控制一组Job的触发,包括SimpleTrigger和CronTrigger,后者支持一种描述触发时间和间隔的表达式语言。Scheduler代表一个Quartz 的独立运行容器,Trigger 和JobDetail可以注册到Schduler中,Schduler可以控制和管理触发器的启动和终止。

Spring的scheduling.quartz包中对Quartz框架进行了封装,使得开发时不用写任何Quartz和Spring的代码就可以实现定时任务。Spring通过JobDetailBean,MethodInvokingJobDetailFactoryBean实现Job的定义。后者更加实用,只需指定要运行的类,和该类中要运行的方法即可,Spring将自动生成符合Quartz要求的JobDetail。

 

实现

Step1:Job/JobDetail
方法一
:(MethodInvokingJobDetailFactoryBean)

<bean id="scheduledUploadJob" 
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
    <property name="targetObject" ref="storageService" />  
    <property name="targetMethod" value="batchUpload" />  
</bean> 

 
方法二:(JobDetailBean)

<bean id="libraryReminderJob"
    class="org.springframework.scheduling.quartz.JobDetailBean">
    <property name="jobClass">
      <value>org.santino.www.jobs.LibraryReminderJob</value>
    </property>
    <property name="jobDataAsMap">
      <map>
        <entry key="libraryService">
          <ref bean="libraryService" />
        </entry>
        <entry key="defaultCcAddress">
          <value></value>
        </entry>
      </map>
    </property>
</bean>

 

其中LibraryReminderJob必须具体化QuartzJobBean的抽象方法executeInternal,这个方法的实现内容也就是Job所要执行的操作。

 

Step2:Trigger
Quartz的两种Trigger也被封装成Spring的SimpleTruggerBean和CronTriggerBean。当仅仅需要触发一次或者以固定时间间隔周期执行,SimpleTrigger是最合适的选择;而CronTrigger则可以通过Cron表达式定义出各种复杂时间规则的调度方案;如每天早晨9:00执行,周一、周三、周五下午5:00执行等。
方法一:(SimpleTruggerBean)

<bean id="uploadJobTrigger"  
    class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
    <property name="jobDetail" ref="scheduledUploadJob" />  
    <property name="startDelay" value="10000" />  
    <!-- Run every 5 minute -->  
    <property name="repeatInterval" value="300000" />  
</bean>

 

 

方法二:(CronTriggerBean)

<bean id="libraryReminderTrigger"  
    class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail">
      <ref bean="libraryReminderJob" />
    </property>
    <property name="cronExpression">
      <value>0 0 14 * * ?</value>
    </property>
</bean>

 


Step3:Scheduler:

<bean id="schedulerFactory"  
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
    <property name="triggers">  
        <list>  
            <ref bean="uploadJobTrigger" />  
            <ref bean="libraryReminderTrigger" />  
        </list>  
    </property>  
    <property name="autoStartup" value="false"/>  
</bean> 

 

附:cronExpresession格式:

字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /


表达式 意义
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发

分享到:
评论
1 楼 yzhong_sa 2009-03-04  
什么东西   看不懂。。。。

相关推荐

    spring+mybatis+quartz任务调度实例和spring+quartz任务调度实例

    里面包含了两个工程项目: 1.Java project工程(含jar包,JDK1.6)。 是spring+quartz的任务调度实例。 2.Java web工程(含jar包,JDK1.7)。 spring+mybatis+quartz任务调度实例

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

    Quartz是一个开源的作业调度框架,常用于创建和执行定时任务。在"spring+springMVC+mybatis+quartz动态定时任务创建"项目中,Quartz扮演着关键角色。它可以动态地添加、修改或删除定时任务,这在需要根据业务需求...

    定时框架spring+quartz

    Quartz允许创建、调度和管理大量的作业和触发器,可以满足各种定时需求。 集成Spring和Quartz的步骤如下: 1. **引入依赖**:首先,在项目的pom.xml文件中添加Quartz和Spring相关依赖。 2. **配置Quartz**:在...

    spring+quartz+maven项目实例

    【标题】"Spring+Quartz+Maven项目实例"是一个基于Spring框架集成Quartz作业调度库的实战项目,采用Maven作为构建工具。这个实例旨在展示如何在Java应用程序中实现定时任务,支持两种运行模式,既可以直接以独立的...

    spring+quartz定时小例子

    Quartz 是一个开源的作业调度框架,能够实现定时任务的管理和执行。 在 "spring+quartz定时小例子" 中,我们主要关注的是如何将这两个框架结合使用,创建一个可以执行定时任务的应用。这个例子包含了相关的框架包和...

    Spring+Quartz实现任务调度的小例子

    而Quartz则是一个强大的、开放源码的作业调度库,它可以用来创建、调度和执行计划任务。Quartz可以集成到Spring中,利用Spring的依赖注入和配置能力,使得任务调度更加简洁和易于维护。 **一、Spring与Quartz的集成...

    spring+quartz demo

    而 Quartz 是一个开源的作业调度框架,可以方便地在应用程序中安排任务执行。 Quartz 的核心功能是创建、调度和执行 Job(任务)。它支持 Cron 表达式和基于日期时间的触发器,能够灵活地设定任务的执行时间。...

    Spring+Quartz 集群

    这包括`SchedulerFactoryBean`,用于初始化和管理Quartz调度器,以及`JobDetail`和`Trigger`,它们分别定义了任务和触发执行任务的规则。 3. **定义Job**:编写实现`org.quartz.Job`接口的类,这是实际执行的任务...

    Spring+Quartz定时调度

    ### 三、Quartz调度策略 Quartz提供了多种调度策略,包括: - **简单触发器(SimpleTrigger)**:按固定间隔重复执行任务。 - **Cron触发器(CronTrigger)**:基于Cron表达式来定义触发时间,支持复杂的定时规则...

    Spring + Quartz配置实例(转载)

    2. **Spring配置文件**:在Spring的XML配置文件中,我们需要声明一个`SchedulerFactoryBean`,它是Spring对Quartz调度器的封装。通过这个bean,我们可以配置Quartz的相关属性,如JobStore类型(内存或数据库存储),...

    Spring+Quartz example

    Spring 和 Quartz 是两个在 Java 开发中非常重要的框架。Spring 是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等众多功能,极大地简化了Java应用的构建。而Quartz则是一...

    spring+quartz任务调度代码版

    本项目"spring+quartz任务调度代码版"显然是一个结合了这两者的实践案例,旨在展示如何在Spring环境下集成和使用Quartz进行任务调度。 Spring框架是一个开源的应用框架,它提供了丰富的功能,包括依赖注入、AOP...

    spring+mvc+quartz.rar

    Spring框架以其强大的功能和灵活的扩展性,成为Java开发的首选,而Quartz作为一款开源的作业调度库,能够很好地与Spring集成,提供定时任务的解决方案。本教程将详细讲解如何利用Spring 4.3.15、Spring MVC 4.3.15和...

    Spring任务调度配置及说明(spring+quartz)

    `SchedulerFactoryBean`是Spring提供的用于创建Quartz调度器的bean,`triggers`属性的列表包含了需要调度的任务触发器。在这里,`startQuertz`会在容器启动时立即执行调度程序。 关于cron表达式的值,我们可以看到...

    spring3+quartz2 定时调度例子,能正常运行的程序

    spring3.2.4+quartz2.2.0 定时调度例子,能正常运行的程序

    spring+mybatis+quartz

    标题 "spring+mybatis+quartz" 暗示了我们正在探讨一个使用Spring框架、MyBatis持久层框架和Quartz作业调度器的集成应用。这个组合在企业级Java应用中非常常见,用于实现复杂的数据操作、服务管理和定时任务。 ...

    spring+quartz定时集群支持

    Quartz是一个开源的作业调度框架,能够安排和执行复杂的定时任务。 在集群环境下,Spring+Quartz的配置需要考虑如何处理多个服务器节点可能同时执行同一任务的问题。为了解决这个问题,Quartz提供了一种集群模式。...

    Spring+quartz相关jar包.rar

    开发者可以通过 Spring 的 XML 配置或者注解方式来定义 Quartz 作业和触发器,使得任务调度更加灵活和易于管理。 在实际开发中,Spring 与 Quartz 的整合步骤通常包括以下几个部分: 1. 添加依赖:在项目中引入 ...

    Spring Boot+Apache Shiro+Spring MVC+MyBatis+Quartz+Druid DEMO

    - Quartz是开源作业调度框架,用于创建和执行作业以完成后台任务。 - 任务调度:创建JobDetail和Trigger,设置执行时间,交由Scheduler管理。 - 作业与触发器:Job代表具体任务,Trigger定义何时触发Job执行。 6...

    Spring mvc + Mybatis + quartz + swagger 定时任务管理[新增、编辑、删除、修改]

    Quartz是Java领域广泛使用的定时任务库,它支持复杂的调度策略,如周期性执行、一次性任务等。在这个系统中,Quartz作为核心的定时任务引擎,允许管理员动态创建、编辑、删除和修改定时任务。所有的任务配置信息,...

Global site tag (gtag.js) - Google Analytics