Java Spring cron表达式使用详解

简介: Java Spring cron表达式使用详解

Java Springcron表达式使用详解

 

 

语法格式

 

Seconds Minutes Hours DayofMonth Month DayofWeek Year

Seconds Minutes Hours DayofMonth Month DayofWeek

 

域字段说明

             取值范围         允许的特殊字符

(Seconds)0-59 , - * /

(Minutes)0-59       , - * /

小时(Hours)    0-23       , - * /

日期(DayofMonth)1-31          , - * / L W C

月份(Month)    1-12JAN-DEC       , - * /

星期(DayofWeek)1-7或者SUN-SAT , - * ? / L C #

年(Year,可选)    留空, 1970-2099 , - * /

 

*   表示匹配该域的所有值,比如在Minutes域使用 * , 即表示每分钟都会触发事件。

 

?   只能用在DayofMonthDayofWeek两个域中使用。它被用来指定非明确的值。因为DayofMonthDayofWeek会相互影响,当着两个元素互斥时应该通过设置一个问号(?)来表明不想设置那个字段例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法:13 13 15 20 *?, 其中最后一位只能用?,而不能使用*,如果使用 * 表示不管星期几都会触发,实际上并不是这样。

 

-   表示范围,例如Minutes域使用 5-20,表示从5分到20分钟每分钟触发一次。Hours域使用10-12,表示从1012,每小时即每个整点触发一次

 

 

/   用来指定渐增的值。例如Seconds域使用0/15,表示从第0秒开始(包括第0),每15秒钟触发一次,即在0153045秒的时候触发一次又如在Seconds域使用5/15,表示从第5秒开始,每15秒触发一次,即在在第5203550秒的时候触发一次

 

/前面指定0*是等价的,即*/  0/ 是等价的。

 

注意:触发事件执行的时间点必须是在取值范围内才有效。比如Minutes域使用40/20,表示从第40分钟开始,每20分钟执行一次,但是Minutes取值范围为0-59,40+20=60,不在取值范围内,所以仅会在每小时的第40分钟执行一次。而如果设置为40/10,则会在第40,50分钟各执行一次。又如在Month域中设置7/6,则仅会在7月出发一次。

 

,   用于指定枚举值。比如,Minutes域使用5,20,则表示520钟时各触发一次又如,在DayofWeek使用 MON,WED,FRI,表示星期一、星期三、星期五

   

L   表示最后(last),只能用于DayofWeekDayofMonth域,如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。如果在DayofMonth域中使用 L 表示一个月的最后一天--非闰年,对于1月来说,则是1.31,对于2月则是2.28如果在DayofWeek使用L表示 7 或者 SAT即星期六,如果在DayofWeek使用L,并在L前面加上数字,它表示该月最后一个星期×,例如 6L 就表示一个月的最后一个星期五

 

W   只能用于DayofMonth域。用来指定给定日期最近的工作日(周一到周五)。比如DayofMonth使用 15W则表示"离该月15号最近的工作日"。因此如果15号为周六,触发器会在14号即周五调用。如果15号为周日,触发器会在16号也就是周一触发。如果15号为周二,那么当天就会触发。然而如果你将DayofMonth域设为 1W ,1号又是周六,触发器会于下周一也就是当月的3号触发,因为它不会越过当月的值的范围边界。

 

LW   LW 这两个字符可以组合 LW用于DayofMonth,表示该月最后一个工作日,即最后一个星期五。

 

#    字符可用于DayofWeek。表示该月第几个周×”,比如"6#3"表示该月第三个周五( 6表示周五#3表示该月第三个)又如 "2#1" 表示该月第一个周一

 

注意:如果指定"5#5"该月没有第五个5,该月是不会触发的,即第几个周x必须在当月范围内存在

 

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

 

常见的一些例子

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:591分钟触发一次

0 0/5 14 * * ?        每天下午2点到2:555分钟触发一次 

0 0/5 14,18 * * ?     每天下午2点到2:55下午6点到6:555分钟触发一次 

0 0-5 14 * * ?        每天下午2点到2:051分钟触发一次

0 10,44 14 ? 3 WED    每年三月的星期三,下午2:102: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月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
131 2
|
14天前
|
XML Java 测试技术
Spring AOP—通知类型 和 切入点表达式 万字详解(通俗易懂)
Spring 第五节 AOP——切入点表达式 万字详解!
73 25
|
16天前
|
存储 NoSQL Java
使用Java和Spring Data构建数据访问层
本文介绍了如何使用 Java 和 Spring Data 构建数据访问层的完整过程。通过创建实体类、存储库接口、服务类和控制器类,实现了对数据库的基本操作。这种方法不仅简化了数据访问层的开发,还提高了代码的可维护性和可读性。通过合理使用 Spring Data 提供的功能,可以大幅提升开发效率。
60 21
|
6天前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
30 7
|
1月前
|
Java Spring
Java Spring Boot监听事件和处理事件
通过上述步骤,我们可以在Java Spring Boot应用中实现事件的发布和监听。事件驱动模型可以帮助我们实现组件间的松耦合,提升系统的可维护性和可扩展性。无论是处理业务逻辑还是系统事件,Spring Boot的事件机制都提供了强大的支持和灵活性。希望本文能为您的开发工作提供实用的指导和帮助。
101 15
|
1月前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
2月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
97 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
2月前
|
Java API 开发者
Java中的Lambda表达式与Stream API的协同作用
在本文中,我们将探讨Java 8引入的Lambda表达式和Stream API如何改变我们处理集合和数组的方式。Lambda表达式提供了一种简洁的方法来表达代码块,而Stream API则允许我们对数据流进行高级操作,如过滤、映射和归约。通过结合使用这两种技术,我们可以以声明式的方式编写更简洁、更易于理解和维护的代码。本文将介绍Lambda表达式和Stream API的基本概念,并通过示例展示它们在实际项目中的应用。
|
3月前
|
Java API 开发者
Java中的Lambda表达式:简洁代码的利器####
本文探讨了Java中Lambda表达式的概念、用途及其在简化代码和提高开发效率方面的显著作用。通过具体实例,展示了Lambda表达式如何在Java 8及更高版本中替代传统的匿名内部类,使代码更加简洁易读。文章还简要介绍了Lambda表达式的语法和常见用法,帮助开发者更好地理解和应用这一强大的工具。 ####
|
3月前
|
并行计算 Java 编译器
深入理解Java中的Lambda表达式
在Java 8中引入的Lambda表达式,不仅简化了代码编写,还提升了代码可读性。本文将带你探索Lambda表达式背后的逻辑与原理,通过实例展示如何高效利用这一特性优化你的程序。

热门文章

最新文章