SpringBoot Scheduling定时任务的示例代码
作者:Rubble 发布时间:2023-08-12 17:55:05
目录
开启定时任务注解@EnableScheduling
@Scheduled添加定时任务
Cron表达式
在线cron工具
适应场景
springBoot提供了定时任务的支持,通过注解简单快捷,对于日常定时任务可以使用。
开启定时任务注解@EnableScheduling
@EnableScheduling
@SpringBootApplication
public class DockerApplication {
public static void main (String[] args) {
SpringApplication.run(DockerApplication.class,args);
}
}
@Scheduled添加定时任务
@Component
public class Task1 {
@Scheduled(cron = "0/1 * * * * ?")
public void doTask1(){
System.out.println("doTask1 " +System.currentTimeMillis());
}
}
两步就可实现定时任务。
Cron表达式
Cron语法格式,共7个部分(域)组成:
Seconds(秒) Minutes(分钟) Hours(小时) DayofMonth(天/几号) Month(月) DayofWeek(星期几) Year(年)
最后年可以不指定,通常用6段表示cron表达式
每一个域可出现的字符如下:
Seconds:可出现", - * /",有效范围为0-59的整数
Minutes:可出现", - * /",有效范围为0-59的整数
Hours:可出现", - * /",有效范围为0-23的整数
DayofMonth(天/几号):可出现", - * / ? L W C",有效范围为0-31的整数
Month:可出现", - * /",有效范围为1-12的整数
DayofWeek(星期几) :可出现", - * / ? L C #",有效范围为1-7的整数或SUN-SAT(星期天开始)两个范围
Year:可出现", - * /"
1)每一个域可能出现如下字符,它们的含义分别是:
*:表示匹配该域的任意值。
?: 只能用在DayofMonth和DayofWeek。DayofMonth和 DayofWeek会相互影响。设置其中某一个值后,为了避免冲突,需要将另一个的值设为“?”
-: 表示范围,在某一个时间范围内触发一次
/:表示起始时间开始触发,然后每隔固定时间触发一次
例如在分钟域里使用5/10,则意味着5分钟触发一次,15,25等分别触发一次.
在(分钟)里的“0/15”,表示从第0分钟开始,每15分钟触发一次
,: 表示多个
L: last表示最后,
在天/日(月)域中,“L”表示一个月的最后一天
在天(星期)域中,“L”表示一个星期的最后一天
L只能出现在DayofWeek和DayofMonth域
W: work表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。例如:在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一 到星期五中的一天,则就在5日触发。另外,W的最近寻找不会跨过月份
LW: 这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五
#: 用于确定每个月第几个星期几,例如在4#2,表示某月的第二个星期三
“C” 表示canlendar,即日历,例如“1C”在星期域上就是包括日历上的星期日。基本无用
2)Cron表达式例子: 注:dayofweek 和 dayofmouth必须有一个为?
0 * * * * ? 每1分钟执行一次
0 0 * * * ? 每天每1小时执行一次
0 0 10 * * ? 每天10点执行一次
0 * 14 * * ? 在每天下午14点到下午14:59期间的每1分钟执行一次
0 30 10 1 * ? 每月1号上午10点30执行一次
0 10 10 10 * ? 每月10日上午10:10执行一次
0/5 * * * * ? 每隔5秒执行一次
0 */1 * * * ? 每隔1分钟执行一次
0 0 12-15 * * ? 每天12-15点整点执行一次
0 0/5 * * * ? 每5分钟执行一次
0 0-5 15 * * ? 在每天下午15点到下午15:05期间的每1分钟执行一次
0 0/10 15 * * ? 在每天下午15点到下午15:50期间的每10分钟执行一次
0 0/10 15,18 * * ? 在每天下午15点到15:50期间和下午18点到18:50期间的每10分钟执行一次
0 0/30 10-15 * * ? 在每天上午10点到下午15:30每半小时执行一次
0 0 10,12,14 * * ? 每天上午10点,下午12点,14点执行一次
在线cron工具
http://tools.jb51.net/code/Quartz_Cron_create
适应场景
Scheduling服务是单机任务,当使用微服务一个服务开启多个节点时,每个节点都会开启同样的定时任务,缺乏任务调度管理,因此Scheduling不太适合多节点的微服务情景。 文章分类
来源:https://juejin.cn/post/7000542091327586341


猜你喜欢
- 面试题1:Bean 的加载过程是怎样的?我们知道, Spring 的工作流主要包括以下两个环节:解析,读 xml 配置,扫描类文件,从配置或
- string str="aaa|||bbb|||ccc"; string[] sArray=str.Split(new[
- 在平时开发应用的时候,经常会遇到列表排序、滑动删除的需求。如果列表效果采用的是 ListView 的话,需要经过自定义 View 才能实现效
- 一般数据库的编码是utf8,utf8是不支持存储表情符的,当存入的微信昵称带有表情符时就会出现乱码情况,有两种解决方法:1.mysql数据库
- 从配置获取的配置默认是明文的,有些像数据源这样的配置需要加密的话,需要对配置中心进行加密处理。下面使用对称性加密来加密配置,需要配置一个密钥
- 引言根据 C# 语言规范,不可能从一个方法返回多个值。使用 C# 提供的一些其他功能,我们可以将多个值返回给调用者方法。本文概述了一些可用的
- 学完了计算机网络课程以后,确实学到了一些网络的概念,初步拥有了对网络的一些认识。这些概念虽然可以用来解释平时网络上遇到的一些问题,但是真正把
- 零、关于HibernateHibernate是冬眠的意思,它是指动物的冬眠,但是本文讨论的Hibernate却与冬眠毫无关系,而是接下来要讨
- 本文假设读者已经有一定Dagger2使用经验使用疑惑之前工作中一直在使用dagger2进行开发,用起来确实很爽,但是我从我第一次使用我就一直
- 一、前言目前 java 垃圾回收主流算法是虚拟机采用 GC Roots Tracing 算法。算法的基本思路是:通过一系列的名为 GC Ro
- 编写上位机与下位机通信的时候,涉及到协议的转换,比较多会使用到二进制。传统的方法,是将数据整体获取到byte数组中,然后逐字节对数据进行解析
- 前言:最近公司在项目开发中,由于华为手机存在部分的问题。所以购买了部分新款的华为手机。在真机调试项目APP时,老是无法出现Logcat打印出
- 前言:阻塞或唤醒一个Java线程需要操作系统切换CPU状态来完成,这种状态转换需要耗费处理器时间。如果同步代码块中的内容过于简单,状态转换消
- 本文实例分析了Android多线程。分享给大家供大家参考,具体如下:在Android下面也有多线程的概念,在C/C++中,子线程可以是一个函
- ShardingSphere的路由引擎类型本篇文章源码基于4.0.1版本上篇文章我们了解到了ShardingSphere在路由流程过程中,根
- 1.背景倒计时的效果在网站或其他平台看到的很多了吧,今天就让我们来看看在OpenHarmony中如何实现它吧!2.效果预览视频效果演示传送门
- 方法1: int d=10; d.ToString("x") //或把x改为X,,,就变成了16位的字符串了. int
- 异常的英文单词是exception,字面翻译就是“意外、例外”的意思,也就是非正常情况。事实上,异常本质上是程序上的错误,包括程序逻辑错误和
- SQLite 数据库简介SQLite 是一个轻量级数据库,它是D. Richard Hipp建立的公有领域项目,在2000年发布了第一个版本
- 本文实例为大家分享了RecyclerView实现侧滑拖拽功能的具体代码,供大家参考,具体内容如下准备ItemDragListenerpack