Spring @Scheduled详解
前言
@Scheduled 注解 是 spring自带的一个便捷的定时器功能。本文主要介绍该方法的几个常用参数。
fixedRate
每隔N毫秒执行一次方法:
@Scheduled(fixedRate = 5000)public void reportCurrentTime() throws InterruptedException {TimeUnit.SECONDS.sleep(1L);log.info("The time is now {}", dateTimeFormat.format(LocalDateTime.now()));}
fixedDelay
方法执行完 N毫秒后执行下一次
@Scheduled(fixedDelay = 5000)public void reportCurrentTime() throws InterruptedException {TimeUnit.SECONDS.sleep(1L);log.info("The time is now {}", dateTimeFormat.format(LocalDateTime.now()));}
initialDelay
过N毫秒开始执行方法
@Scheduled(initialDelay = 5000, fixedDelay = 10000)public void reportCurrentTime() throws InterruptedException {TimeUnit.SECONDS.sleep(1L);log.info("The time is now {}", dateTimeFormat.format(LocalDateTime.now()));}
初始化后 5s开始执行方法体,sleep休眠1s,所以6s后打印第一条日志。
执行完方法体后fixedDelay 10s, sleep 1s,打印第二条日志。
cron
cron和linux下的 crontab语法是一致的~ 例如每分钟的第 30 秒执行一次:
@Scheduled(cron = "30 * * * * ?")public void reportCurrentTime() {log.info("The time is now {}", dateTimeFormat.format(LocalDateTime.now()));}
字符串表达式由6个或者7个元素构成。 其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示8到18点区间每隔4小时),一个列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"这两个元素互斥的,如果其中一个有设置值则必须要对另一个设置?
.
字段 | 允许值 | 允许的特殊字符 |
---|---|---|
秒 | 0-59 | - * / |
分 | 0-59 | - * / |
小时 | 0-23 | - * / |
日期 | 1-31 | - * ? / L W C |
月份 | 1-12 或者 JAN-DEC | - * / |
星期 | 1-7 或者 SUN-SAT | - * ? / L C # |
年(可选) | 留空, 1970-2099 | - * / |
需要特别注意星期里的1是星期天!
特殊字符 | 含义 | 案例 |
---|---|---|
-
|
字符代表区间 | 子表达式(秒)0-10 代表每分钟的前10秒 |
*
|
字符代表所有可能的值 | |
/
|
字符用来指定数值的增量 |
在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟 在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样 |
?
|
字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值,当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?” | |
L
|
字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写 | 子表达式(日期)“6L”表示这个月的倒数第6天 |
W
|
字符代表着平日(Mon-Fri),并且仅能用于日域中。它用来指定离指定日的最近的一个平日。 | 日域中的 15W 意味着 “离该月15号的最近一个平日。” 假如15号是星期六,那么 trigger 会在14号(星期五)触发,因为星期四比星期一离15号更近。 |
C
|
代表“Calendar”的意思。它的意思是计划所关联的日期,如果日期没有被关联,则相当于日历中所有日期。 | 5C在日期字段中就相当于日历5日以后的第一天。1C在星期字段中相当于星期日后的第一天。 |
#
|
代表的第几个星期 | 例如1#3 代表的是第三个星期一。 |
案例:
- 特定值
0 0 7 * * ?
每天上午7点 - 区间值
0 * 7-8 * * ?
每天上午7点到8点的每个0秒时 即 7-8点每分钟 - 范围值
0 0 7,8,9 * * ?
每天的上午7,8,9整点 - 增量
0 0/5 14 * * ?
在每天下午2点到下午3点期间每5分钟触发 不包括3点 - L last:
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触发
参考文献
https://blog.csdn.net/qq_33556185/article/details/51852537
cron 部分是对原文的补充和整理。
Spring @Scheduled详解相关推荐
- Spring AOP详解(转载)所需要的包
上一篇文章中,<Spring Aop详解(转载)>里的代码都可以运行,只是包比较多,中间缺少了几个相应的包,根据报错,几经百度搜索,终于补全了所有包. 截图如下: 在主测试类里面,有人怀疑 ...
- Spring JDBC详解
<Spring JDBC详解> 本文旨在讲述Spring JDBC模块的用法.Spring JDBC模块是Spring框架的基础模块之一. 一.概述 在Spring JDBC模块中,所有的 ...
- Spring 体系结构详解
Spring 体系结构详解 核心容器(Core Container) Core和Beans模块提供了Spring最基础的功能,提供IOC和依赖注入特性.这里的基础概念是BeanFactory,它提供对 ...
- [转载]Spring配置文件详解一:
2019独角兽企业重金招聘Python工程师标准>>> 原文地址:Spring配置文件详解一:<context:annotation-config/>与<conte ...
- struts2+hibernate+spring配置详解
#struts2+hibernate+spring配置详解 struts2+hibernate+spring配置详解 哎 ,当初一个人做好难,现在终于弄好了,希望自学这个的能少走些弯路. 以下是自己配 ...
- spring注解详解与用法(总览)
这篇文章收集了我写的所有的spring注解的详细说明与用法,点击可以跳转到对应文章,此文章会不断更新 spring注解详解与用法(1)最基础也是最常见的如下所示,详情点击这里 @Controller/ ...
- Spring入门详解
typora-copy-images-to: upload Spring入门详解 Spring框架是Java开发中最常用的框架,功能非常强大 源码下载:Spring Framework jar包.文档 ...
- Spring IoC详解
Spring IoC详解 原文地址:Spring IoC详解 写在最前 本文将主要写Spring最核心的部分,为什么写这篇的原因也是因为在刚开始学习Spring的时候,学得太粗糙了.感觉学了个皮毛,从 ...
- Spring源码(八):Spring事务详解
Spring事务详解 一.事务执行流程 二.Spring事务切面 三.事务切面的Pointcut和Advice 四.注解事务的源码分析 五.Sping事务的传播属性 六.Sping事务的异常校验 七. ...
最新文章
- Vmware vSphere 5.0安装和配置
- AWS — AWS CloudFormation
- php 3d animation,css3D+动画的例子(附完整代码)
- vs增量链接、清单文件
- CSS每日学习笔记(2)
- 人工蜂群算法python_教程 | 用人工蜂群算法求解k-分区聚类问题
- BZOJ 1191 [HNOI2006]超级英雄Hero
- 古典人物海报设计PSD分层模板,浓郁国风,展古典韵味
- Blend_技巧篇_淡入淡出
- 模型堆叠(Stacking)和模型融合的原理与实现以及一个库heamy的介绍
- VS2019 + Qt ERROR MSB4181 QtRunwork 返回了false,但未记录错误
- oracle负数,oracle取交集_oracle取负数_oracle case when
- 计算机ping使用的端口,ping 端口:Ping端口命令的使用方法介绍
- Word 一件删除所有空格
- linux系统下安装pfam数据库中hmmer软件以及python3非root用户的安装
- js实现判断输入内容是否为数字
- 日本国家旅游局的新版《日本本土风情导览》主打人迹罕至的名胜、劲酷的景点以及鲜为人知的攻略
- 历代华为Mate系列主要参数对比,更新于2020年11月
- 七骑士android版上线时间,七骑士新版本登场 开启征服樱之国度旅程
- A记录和CNAME记录——【网络】
热门文章
- matlab根据数值画等高线,关于matlab画等高线图
- adjtimex简介
- git pull和git pull -- rebase
- 经典按键java手机游戏跑酷,快来收藏!
- php小蛋白奶粉有哪些牌子,含乳铁蛋白的奶粉有哪些牌子?宝妈们需要知道这些挑选标准...
- 笔记:部署Sharding-Proxy4.1.1时遇到的坑(持续更新中。。。)
- mouse rat web net log wood alligator crocodile 区别
- 台式机接收器此计算机已被连接限制,台式机使用无线接收器上不了网如何解决...
- python从一加到100_让我来解释使用循环将1加到了100
- ThingMap一键城市2.0重新出发:快速生成三维城市