`

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

 
阅读更多

可参考:

总共有两个重点:
1:JobDetailFactoryBean:即需要调度的job描述,一般用MethodInvokingJobDetailFactoryBean和JobDetailFactoryBean比较多。

 

2:触发器:用来调度任务的,其参数是调度job的JobDetailFactoryBean。

其中配置如下:

 

    <!--<bean id="firstJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
        <property name="targetObject" ref="myBean" />  
        <property name="targetMethod" value="printMessage" />  
    </bean>  -->
  
    <bean name="firstJobDetail"    class="org.springframework.scheduling.quartz.JobDetailFactoryBean">  
        <property name="jobClass" value="com.liu.jobs.FirstScheduledJob" />  
        <property name="jobDataMap">  
            <map>  
                <entry key="paramBean" value-ref="paramBean" />  <!--  可增加参数,在job里增加setParamBean方法即可 -->
            </map>  
        </property>  
        <property name="durability" value="true" />  
    </bean> 
    <bean id="firstTrigger"  class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
        <property name="jobDetail" ref="firstJobDetail" />  
        <!--<property name="cronExpression" value="0/5 * * ? * SAT-SUN" />-->  
        <property name="cronExpression" value="0/5 * * ? * *" />  
    </bean>  

 

所以,配置了上面两个重点,再将调度器放入调度工厂中就行了:

<bean  class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
    <property name="triggers">  
        <list>  
            <ref bean="firstTrigger" />  
        </list>  
    </property>  
</bean> 

 

附(cronExpression表达式):

秒 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触发
"0 0 6 * * ?"               每天早上6点
"0 0 */2 * * ?"             每两个小时
"0 0 23-7/2,8 * * ?"        晚上11点到早上8点之间每两个小时,早上八点
"0 0 11 ? * 1-3"            每个礼拜的礼拜一到礼拜三的早上11点
"0 0 4 1 1 ?"               1月1日早上4点

1、“*”字符被用来指定所有的值。如:"*"在分钟的字段域里表示“每分钟”。 

2、“?”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候,它是有用的。

3、月份中的日期和星期中的日期这两个元素是互斥的,一起用时,应该通过设置一个问号来表明不想设置那个字段。

4、“-”字符被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”。

5、“,”字符被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”。

6、“/”字符用于指定增量。如:“0/15”在秒域意思是每分钟的0,15,30和45秒。“5/15”在分钟域表示每小时的5,20,35和50。符号“*”在“/”前面(如:*/10)等价于0在“/”前面(如:0/10)。记住一条本质:表达式的每个数值域都是一个有最大值和最小值的集合,如:秒域和分钟域的集合是0-59,日期域是1-31,月份域是1-12。字符“/”可以帮助你在每个字符域中取相应的数值。如:“7/6”在月份域的时候只有当7月的时候才会触发,并不是表示每个6月。

7、L是‘last’的省略写法可以表示day-of-month和day-of-week域,但在两个字段中的意思不同,例如day-of-month域中表示一个月的最后一天。如果在day-of-week域表示‘7’或者‘SAT’,如果在day-of-week域中前面加上数字,它表示一个月的最后几天,例如‘6L’就表示一个月的最后一个星期五(注意:这里的6可能是根据1是星期日来计算的)。

8、字符“W”只允许日期域出现。这个字符用于指定日期的最近工作日。例如:如果你在日期域中写 “15W”,表示:这个月15号最近的工作日。所以,如果15号是周六,则任务会在14号触发。如果15好是周日,则任务会在周一也就是16号触发。如果是在日期域填写“1W”即使1号是周六,那么任务也只会在下周一,也就是3号触发,“W”字符指定的最近工作日是不能够跨月份的。字符“W”只能配合一个单独的数值使用,不能够是一个数字段,如:1-15W是错误的。

9、“L”和“W”可以在日期域中联合使用,LW表示这个月最后一周的工作日。

字符“#”只允许在星期域中出现。这个字符用于指定本月的某某天。例如:“6#3”表示本月第三周的星期五(6表示星期五,3表示第三周)。“2#1”表示本月第一周的星期一。“4#5”表示第五周的星期三。

10、字符“C”允许在日期域和星期域出现。这个字符依靠一个指定的“日历”。也就是说这个表达式的值依赖于相关的“日历”的计算结果,如果没有“日历”关联,则等价于所有包含的“日历”。如:日期域是“5C”表示关联“日历”中第一天,或者这个月开始的第一天的后5天。星期域是“1C”表示关联“日历”中第一天,或者星期的第一天的后1天,也就是周日的后一天(周一)。

 

 

 

 

 

分享到:
评论

相关推荐

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

    本文将深入探讨如何在Spring项目中集成Quartz,并详细解析Cron表达式,以便更好地理解和运用定时任务。 首先,集成Quartz到Spring项目中通常涉及以下步骤: 1. **引入依赖**:在项目的pom.xml或build.gradle文件中...

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

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

    quartz定时任务cron表达式

    同时,由于其通用性,cron表达式也被其他许多系统和语言所采用,如Linux的crontab或Spring Framework中的定时任务。 总之,quartz定时任务的cron表达式是调度任务的核心元素,它提供了一种强大的方式来定义任务的...

    Spring2.0+quartz1.8定时执行任务内含Cron表达式生成器

    -- 调用频率设置 每天上午2点和下午5点 cron表达式 --&gt; &lt;bean id="runTime" class="org.springframework.scheduling.quartz.CronTriggerBean"&gt; &lt;value&gt;0 0 2,17 * * ? &lt;!-- 最终启动的配置...

    quartz定时任务cron表达式相关内容

    总的来说,Quartz结合cron表达式提供了一种强大的工具,使得开发者能够灵活地在Java应用中安排复杂的定时任务。通过阅读博文、理解配置文件和文档,你可以深入学习Quartz的工作原理,提升在分布式系统中的任务调度...

    定时任务cron表达式生成.rar

    Spring框架则通过`@Scheduled(cron = "cron表达式")`,将方法标记为定时任务,根据给定的cron表达式自动执行。 使用这个“定时任务cron表达式生成”工具,用户可以直观地设置任务的执行频率,而无需手动编写复杂的...

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

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

    Java 写的Cron表达式解析

    Java中的Cron表达式解析通常是通过Spring框架的`org.springframework.scheduling.support.CronSequenceGenerator`类或者第三方库如Quartz的`org.quartz.CronExpression`来实现。 首先,让我们理解Cron表达式的格式...

    应用再html、jsp上的自动生成Cron表达式

    Cron表达式介绍** Cron表达式是Unix/Linux系统中的定时任务调度器Cron的一个组成部分,它由六个或七个由空格分隔的字段组成,每个字段代表不同的时间单位(秒、分钟、小时、日期、月份、星期、年份)。通过这些字段...

    Cron表达式解析 翻译为中英文.zip

    Cron表达式是Unix/Linux系统中的定时任务调度器Cron所使用的语法,也被广泛应用于Java世界,例如Quartz、Spring等框架。它允许用户以字符串的形式定义任务的执行时间,如分钟、小时、日期等。这个压缩包文件包含了对...

    Cron表达式生成器java版(需要jdk1.8)

    cron表达式是Unix/Linux系统中用于定时任务调度的一种机制,而在Java中,通过Quartz、Spring框架等库,也可以使用cron表达式来实现定时任务。本项目提供的"Cron表达式生成器java版"是一个基于Java 1.8的工具,能够...

    spring整合quartz定时任务调度

    Spring框架作为Java领域广泛使用的轻量级框架,提供了与第三方库Quartz的整合,使得开发者能够轻松地在Spring应用中实现复杂的定时任务调度。Quartz是一款开源的作业调度框架,支持丰富的调度策略,可以满足各种定时...

    计划任务Cron表达式生成

    "Cron表达式"是Linux系统中计划任务的核心,而Java社区通过`@Scheduled`注解和Quartz库等方式也引入了类似的概念,使得在Java应用中实现定时任务变得非常方便。 "Cron"这个词来源于北欧神话中的时间之神"Cronus",...

    spring-quartz定时任务小实例

    Spring Quartz 是一个强大的任务调度框架,它允许开发者在Java应用中定义和执行定时任务。本实例将探讨如何在Spring框架中集成Quartz,创建并运行一个简单的定时任务。以下是你需要知道的关键知识点: 1. **Quartz...

    Quartz的cron表达式

    Quartz 的 cron 表达式是一个强大的调度工具,用于设置定时任务的执行时间。它由七个字段组成,分别是秒、分钟、小时、天(月)、月、天(星期)和年份。每个字段可以设置特定的值、范围、列表、通配符等。 秒(0-...

    spring quartz 表达式在线生成器

    Spring框架通过Spring JobSupport类集成了Quartz,使得在Spring应用中配置和管理定时任务变得更加便捷。 Spring Quartz的表达式通常基于Cron表达式,这是一种特殊的时间格式,用于定义任务的执行周期。例如,“0 0 ...

    定时任务cron 解析为中文.docx

    5. `org.quartz.CronExpression`:Quartz定时任务库提供的cron表达式验证类。 6. `org.springframework.util.Assert`:Spring Framework提供的断言工具类。 `CronExpParserUtil`的核心方法是`translateToChinese`,...

    Quartz Cron 表达式生成,Cron在线编辑器

    Quartz Cron表达式是Java定时任务库Quartz的重要组成部分,用于定义定时任务的执行规则。Cron表达式是一种字符串格式,由七个子表达式组成,分别代表秒、分、小时、日、月、周和年,允许指定一个精确的时间调度。...

    spring3配置quartz定时任务

    本文将详细介绍如何在Spring 3中配置Quartz来实现定时任务。 首先,理解定时任务的基本概念。定时任务是在指定时间点或按照一定规律自动执行的任务,这在业务系统中非常常见,例如数据清理、报表生成等。Quartz提供...

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

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

Global site tag (gtag.js) - Google Analytics