`
plane
  • 浏览: 160727 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java的spring的quartz 时间配置相应字符串的说明与实例

    博客分类:
  • java
 
阅读更多
本文源自:http://js.sse6.cn/gzsgfrz/jszj/2010-02-02/1431.html


使用spring的quartz循环任务的时候,有一件事,一直让我很奇怪,哪就是相应的循环设置的字符串,网上收录了以下一篇文章,感觉说得比较清楚,自己记录一下,也方便以后参阅学习。
一个Cron-表达式是一个由六至七个字段组成由空格分隔的字符串,其中6个字段是必须的而一个是可选的,如下:
字段名                     允许的值                允许的特殊字符
    秒                             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                , - * /


'*' 字符可以用于所有字段,在“分”字段中设为"*"表示"每一分钟"的含义。

'?' 字符可以用在“日”和“周几”字段. 它用来指定 '不明确的值'. 这在你需要指定这两个字段中的某一个值而不是另外一个的时候会被用到。在后面的例子中可以看到其含义。

'-' 字符被用来指定一个值的范围,比如在“小时”字段中设为"10-12"表示"10点到12点".

',' 字符指定数个值。比如在“周几”字段中设为"MON,WED,FRI"表示"the days Monday, Wednesday, and Friday".

'/' 字符用来指定一个值的的增加幅度. 比如在“秒”字段中设置为"0/15"表示"第0, 15, 30, 和 45秒"。而 "5/15"则表示"第5, 20, 35, 和 50". 在'/'前加"*"字符相当于指定从0秒开始. 每个字段都有一系列可以开始或结束的数值。对于“秒”和“分”字段来说,其数值范围为0到59,对于“小时”字段来说其为0到23, 对于“日”字段来说为0到31, 而对于“月”字段来说为1到12。"/"字段仅仅只是帮助你在允许的数值范围内从开始"第n"的值。 因此 对于“月”字段来说"7/6"只是表示7月被开启而不是“每六个月”, 请注意其中微妙的差别。

'L'字符可用在“日”和“周几”这两个字段。它是"last"的缩写, 但是在这两个字段中有不同的含义。例如,“日”字段中的"L"表示"一个月中的最后一天" —— 对于一月就是31号对于二月来说就是28号(非闰年)。而在“周几”字段中, 它简单的表示"7" or "SAT",但是如果在“周几”字段中使用时跟在某个数字之后, 它表示"该月最后一个星期×" —— 比如"6L"表示"该月最后一个周五"。当使用'L'选项时,指定确定的列表或者范围非常重要,否则你会被结果搞糊涂的。

'W' 可用于“日”字段。用来指定历给定日期最近的工作日(周一到周五) 。比如你将“日”字段设为"15W",意为: "离该月15号最近的工作日"。因此如果15号为周六,触发器会在14号即周五调用。如果15号为周日, 触发器会在16号也就是周一触发。如果15号为周二,那么当天就会触发。然而如果你将“日”字段设为"1W", 而一号又是周六, 触发器会于下周一也就是当月的3号触发,因为它不会越过当月的值的范围边界。'W'字符只能用于“日”字段的值为单独的一天而不是一系列值的时候。

'L'和'W'可以组合用于“日”字段表示为'LW',意为"该月最后一个工作日"。

'#' 字符可用于“周几”字段。该字符表示“该月第几个周×”,比如"6#3"表示该月第三个周五( 6表示周五而"#3"该月第三个)。再比如: "2#1" = 表示该月第一个周一而 "4#5" = 该月第五个周三。注意如果你指定"#5"该月没有第五个“周×”,该月是不会触发的。

'C' 字符可用于“日”和“周几”字段,它是"calendar"的缩写。 它表示为基于相关的日历所计算出的值(如果有的话)。如果没有关联的日历, 那它等同于包含全部日历。“日”字段值为"5C"表示"日历中的第一天或者5号以后",“周几”字段值为"1C"则表示"日历中的第一天或者周日以后"。

对于“月份”字段和“周几”字段来说合法的字符都不是大小写敏感的。

下面是一些完整的例子:
表达式                                             含义
"0 0 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分每分钟一次触发
"0 0/5 14 * * ?"                      每天从下午2点开始到2:55分结束每5分钟一次触发
"0 0/5 14,18 * * ?"                 每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发
"0 0-5 14 * * ?"                      每天14:00至14:05每分钟一次触发
"0 10,44 14 ? 3 WED"            三月的每周三的14:10和14: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"                      每月最后一个周五的10:15触发
"0 15 10 ? * 6L 2002-2005"   2002年至2005年的每月最后一个周五的10:15触发
"0 15 10 ? * 6#3"                    每月的第三个周五的10:15触发
分享到:
评论

相关推荐

    springQuartz.zip

    CRON表达式是一种字符串格式,用于定义时间表,比如每天的几点几分执行任务。 6. **读取readme.htm**:在压缩包中,readme.htm很可能是提供项目介绍、运行指南或者注意事项的文档。建议首先阅读此文件,了解如何...

    spring quartz集群配置

    Spring Quartz 集群配置详解 在分布式系统中,定时任务的管理往往是一个重要的环节,Spring与Quartz的结合能够帮助我们实现复杂的工作调度。Quartz是一个开源的作业调度框架,它提供了高度可配置的定时任务执行能力...

    Spring Quartz1.8.x

    1. **Spring集成Quartz**:Spring通过`org.springframework.scheduling.quartz`包提供了与Quartz的集成,可以方便地在Spring应用上下文中配置Job、Trigger以及Scheduler。这包括使用`SchedulerFactoryBean`来启动和...

    Spring+Quartz2

    Cron 表达式是一种字符串格式,用于定义任务执行的时间模式。例如,"0 * * * * ?" 表示每分钟执行一次,"0 0 12 * * ?" 则表示每天中午12点执行。用户可以通过在线工具生成适合的 Cron 表达式,以满足不同需求。 将...

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

    Spring和Quartz是Java开发中常用的两个框架,它们在企业级应用中被广泛用于实现定时任务的管理和执行。Spring提供了一个轻量级的容器来管理Bean,而Quartz则是一个强大的作业调度库,能够帮助开发者定义和执行定时...

    Spring线程时间配置:Quartz和CronExpression

    ### Spring线程时间配置:Quartz与CronExpression详解 在Spring框架中,为了实现定时任务的调度,引入了一个强大的工具——Quartz。Quartz是一个功能丰富的开源作业调度器,可以用于Java应用程序中的作业调度。它...

    Spring -Quartz的配置

    `quartz.properties` 文件通常会包含Quartz的配置信息,如数据库连接字符串、job存储方式等。 然后,定义Job和Trigger。Job是你要执行的任务,而Trigger决定何时触发Job。你可以创建一个实现了`org.springframework...

    Spring Quartz集成

    Quartz是一个开源的作业调度框架,能够按预定的时间执行任务,而Spring作为企业级应用的Java框架,提供了对Quartz的高级封装,简化了在Spring应用中使用Quartz的步骤。 在集成Spring和Quartz时,通常涉及以下关键类...

    spring整合quartz常见问题

    - **适用于JobDetailFactoryBean**: 设置`org.quartz.jobStore.useProperties=true`是推荐的做法,因为这种方式可以确保JobDataMap中的数据以字符串形式存储,从而避免类版本冲突问题。 - **适用于...

    spring-quartz-02

    然后,需要在 Spring 配置文件(通常是 `applicationContext.xml` 或者 `applicationContext-groovy`)中配置 SchedulerFactoryBean,这是 Spring 与 Quartz 集成的关键。在这里,我们不仅要指定 Job 和 Trigger,...

    spring-quartz-03

    在项目中引入Spring和Quartz的相关依赖后,我们可以通过Spring的配置来创建和管理Quartz的Scheduler实例。 **2. Quartz的核心概念** - **Job**:代表一个可执行的任务,实现了`org.quartz.Job`接口。 - **Trigger*...

    Quartz在Spring中动态设置cronExpression

    Spring提供了一套机制来创建、管理和销毁Quartz中的Scheduler实例、Jobs和Triggers,这使得开发人员无需直接处理复杂的Quartz配置代码,而是可以通过XML或Java配置来声明式地定义这些组件。 #### 2. CronTrigger与...

    quartz3种调度形式+传参.zip

    Cron表达式是一种字符串格式,用于定义任务执行的时间规则,如“0 0 12 * * ?”表示每天中午12点执行。通过这种方式,你可以灵活地设定任务的执行频率。 3. SimpleTrigger调度 SimpleTrigger则更侧重于任务执行的...

    基于 Java 使用 Spring Boot 3 和 JDK 17.zip

    本项目"基于 Java 使用 Spring Boot 3 和 JDK 17.zip"正是这样的一个实例,展示了如何利用这两个强大的工具构建现代应用。 Spring Boot 3是Spring框架的一个子项目,其核心理念是简化Spring应用的初始搭建以及开发...

    Spring调度器Quartz笔记

    Cron 表达式是一种字符串格式,可以精确到秒来定义任务执行的周期。例如,`0 0 1 * * ?` 表示每天的凌晨1点执行任务。 3. **Spring 集成 Quartz**:Spring 的 `SchedulerFactoryBean` 负责初始化和管理 Quartz 的 ...

    Spring 中任务调度 TimeTask 与quartz简单用法

    本篇文章将详细探讨Spring中的两种常见任务调度工具:`TimerTask`和`Quartz`,以及如何配置`cronExpression`来精确控制任务的执行时间。 首先,我们来了解`TimerTask`。`TimerTask`是Java内置的定时任务类,它继承...

    Spring配置定时器

    Cron表达式是一种字符串格式,用于定义时间的调度规则。它包含6或7个字段,每个字段代表不同的时间单位(秒、分、小时、日、月、周几、年)。例如,表达式`0 49 15 * * ?`表示每天15:49执行任务。 - 字段允许的值...

    Quartz-demo

    Cron表达式是一种字符串格式,用于定义任务的执行时间,例如:"0 0/5 * * * ?" 表示每五分钟执行一次。 3. **Scheduler**: 调度器是Quartz的核心,负责管理和执行Jobs和Triggers。你可以通过`Scheduler`实例来安排...

    ssm+redis+quartz

    Redis是一款高性能的键值对数据库,支持多种数据结构如字符串、哈希、列表、集合、有序集合等。它通常用于缓存、消息中间件、实时统计等功能,具有高速读写性能和丰富的客户端支持。在SSM项目中,Redis可以作为缓存...

    Springboot整合动态Quartz.zip

    - SpringBoot简化了Quartz的配置,通过自动配置可以快速启动调度器,并且提供了与Spring Beans的无缝集成,可以直接将Spring Beans作为Job实例使用。 7. **trendsquartz项目**: - 压缩包中的`trendsquartz`可能...

Global site tag (gtag.js) - Google Analytics