`
rain_2372
  • 浏览: 682407 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring -quartz 定时任务 timerTask

阅读更多
1、Scheduler的配置

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
       <property name="triggers"> 
           <list> 
              <ref bean="testTrigger"/> 
           </list> 
       </property> 
       <property name="autoStartup" value="true"/> 
</bean> 

    说明:Scheduler包含一个Trigger列表,每个Trigger表示一个作业。

2、Trigger的配置

<bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
       <property name="jobDetail" ref="testJobDetail"/> 
       <property name="cronExpression" value="*/1 * * * * ?"/><!-- 每隔1秒钟触发一次 --> 
</bean> 

    说明:

         1)Cron表达式的格式:秒 分 时 日 月 周 年(可选)。

               字段名                 允许的值                        允许的特殊字符 

               秒                         0-59                               , - * / 

               分                         0-59                               , - * / 

               小时                   0-23                               , - * / 

               日                         1-31                               , - * ? / L W C 

               月                         1-12 or JAN-DEC          , - * / 

               周几                     1-7 or SUN-SAT            , - * ? / L C # 

               年 (可选字段)     empty, 1970-2099      , - * /

               “?”字符:表示不确定的值

               “,”字符:指定数个值

               “-”字符:指定一个值的范围

               “/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m

               “L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X

               “W”字符:指定离给定日期最近的工作日(周一到周五)

               “#”字符:表示该月第几个周X。6#3表示该月第3个周五

         2)Cron表达式范例:

                 每隔5秒执行一次:*/5 * * * * ?

                 每隔1分钟执行一次:0 */1 * * * ?

                 每天23点执行一次:0 0 23 * * ?

                 每天凌晨1点执行一次:0 0 1 * * ?

                 每月1号凌晨1点执行一次:0 0 1 1 * ?

                 每月最后一天23点执行一次:0 0 23 L * ?

                 每周星期天凌晨1点实行一次:0 0 1 ? * L

                 在26分、29分、33分执行一次:0 26,29,33 * * * ?

                 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?
表达式 意义
"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触发

至于每个符号 看看例子就好了.很简单了.
3、JobDetail的配置

<bean id="testJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
        <property name="targetObject" ref="testJob"/> 
        <property name="targetMethod" value="execute"/> 
        <property name="concurrent" value="false"/>
        <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 --> 
</bean> 

4、业务类的配置

<bean id="testJob" class="com.cjm.web.service.quartz.TestJob"/> 

5、业务类源代码

public class TestJob { 
    public void execute(){ 
        try{ 
              //.......
         }catch(Exception ex){ 
             ex.printStackTrace(); 
         } 
     } 


    说明:业务类不需要继承任何父类,也不需要实现任何接口,只是一个普通的java类。

注意:

     在Spring配置和Quartz集成内容时,有两点需要注意

           1、在<Beans>中不能够设置default-lazy-init="true",否则定时任务不触发,如果不明确指明default-lazy-init的值,默认是false。

           2、在<Beans>中不能够设置default-autowire="byName"的属性,否则后台会报org.springframework.beans.factory.BeanCreationException错误,这样就不能通过Bean名称自动注入,必须通过明确引用注入


分享到:
评论

相关推荐

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

    在这两种方式中,Spring框架提供了自己的定时任务工具Spring Task,以及与专业定时任务框架Quartz集成的能力。 首先,对于Java自带的定时任务实现,我们可以使用java.util.Timer和java.util.TimerTask类。Timer类...

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

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

    java中spring与Quartz 整合定时任务.pdf

    在Java开发中,Spring框架和Quartz库的整合是实现定时任务的一种常见方式。Spring提供了灵活的定时任务支持,而Quartz则是一个强大的作业调度框架,可以用来安排复杂的任务执行计划。下面我们将深入探讨如何在Spring...

    关于 spring 里的定时任务设置

    在Spring框架中,定时任务的实现提供了多种方式,如基于Java Timer API的定时任务和基于Quartz库的定时任务。这两种方法各有优缺点,适用于不同的场景。以下将详细讲解这两种方式。 1. 基于Java Timer API的定时...

    quartz 定时任务

    Quartz是一款开源的作业调度框架,它允许在Java应用程序中创建和管理定时任务。Spring框架则是一个广泛应用的全面的企业级应用开发框架,它提供了一种将Quartz集成到Spring应用中的方式,使得任务调度变得更加简单和...

    spring定时器(内含TimerTask实现和Quartz实现两种方式)

    本篇文章将详细探讨两种实现Spring定时任务的方法:基于Java内置的`TimerTask`和第三方库Quartz Scheduler。 首先,让我们看看如何使用`TimerTask`来实现Spring中的定时任务。`TimerTask`是Java的标准库类,它提供...

    java中spring与Quartz 整合定时任务.docx

    在Java开发中,Spring框架和Quartz库的整合是实现定时任务的常见方法。Spring提供了对Quartz的集成,使得我们可以方便地在Spring应用上下文中配置和管理定时任务。下面将详细解释如何在Spring中整合Quartz以及相关的...

    定时的爱-完成定时任务的加载和发送

    对于Spring用户,可以利用Spring的`@Scheduled`注解和`TaskScheduler`接口来实现定时任务。`@Scheduled`注解可以直接放在方法上,声明任务的执行周期,而`TaskScheduler`则提供了更高级的定制选项。例如: ```java...

    Spring提供的三种定时任务机制及其比较

    在Spring框架中,有三种主要的定时任务机制可供开发者选择,分别是基于Quartz的定时机制、Spring自己的`@Scheduled`注解以及Java的`java.util.Timer`类。在这篇文章中,我们将重点讨论基于Quartz的定时机制,因为它...

    Spring的quartz和Timer实现定时

    在Java世界中,任务调度是十分重要的,Spring框架提供了多种定时任务实现方式,其中包括Quartz和Timer。Quartz是一款开源的作业调度框架,而Timer是Java标准库中的一个类,用于执行定时任务。这两个工具都能帮助...

    spring2.0 job Quartz 和Time一样的定时任务

    在本篇文章中,我们将聚焦于Spring 2.0中的Job以及Quartz这两款工具,探讨它们如何实现定时任务,以及它们与Java内置的`java.util.Timer`类(简称Time)的异同。 首先,让我们从Java自带的`Timer`类开始。`Timer`是...

    spring几种定时执行任务方法 TimeTask Quartz

    本文将深入探讨Spring框架下实现定时任务的几种主流方法,包括使用`java.util.Timer`(即Java定时器)、Spring定时器以及Quartz定时器,旨在帮助开发者根据具体业务场景选择最合适的技术方案。 ### 1. Java定时器...

    spring2.0学习笔记+spring定时任务

    定时任务在任何企业级应用中都扮演着重要角色,Spring提供了两种主要的方式来实现定时任务:一是使用`org.springframework.scheduling.timer.TimerTask`,二是使用`org.springframework.scheduling.quartz....

    两种方式通过spring实现定时执行任务操作

    本文将详细讲解两种通过Spring实现定时任务的方法:Spring的`TimerTask`和`Spring Batch`的`Tasklet`。我们将涵盖这两种方法的基本原理、配置以及使用源码,确保你能全面理解如何在实际项目中应用。 ### 一、Spring...

    java定时任务调度

    在Java中,有多种实现定时任务调度的方式,包括但不限于Java内置的`java.util.Timer`类、Spring框架的`@Scheduled`注解以及Quartz库。 1. **Java内置的`java.util.Timer`和`TimerTask`**: - `Timer`类用于创建一...

    Spring定时任务的几种实现

    在上面的例子中,`org.springframework.scheduling.quartz.JobDetailBean`用于配置定时任务的基本信息,如作业类名等。`jobDataAsMap`属性用于传递作业参数。 ##### 2. 使用Spring Task Spring Task是Spring框架...

    Spring定时器TimerTask用法

    本文将详细介绍如何在Spring中使用`TimerTask`类以及Spring的定时任务解决方案。 首先,让我们了解一下Spring的定时任务框架`org.springframework.scheduling`。这个模块提供了多种定时任务的支持,如基于Java的`@...

    spring + jdk TimerTask定时器

    Spring框架提供了一套强大的定时任务解决方案,而JDK自带的`TimerTask`类则是实现定时任务的基础工具。本文将深入探讨如何在Spring框架中结合JDK的`TimerTask`来创建和管理定时任务。 ### Spring定时任务简介 ...

Global site tag (gtag.js) - Google Analytics