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
猜你喜欢
- 本文实例讲述了Java计算文本MD5加密值的方法。分享给大家供大家参考,具体如下:java计算文本MD5值,用于加密import java.
- 一.内部类的介绍 内部类: 一个类定义在 另一个类 的 内部。 &
- springboot多模块项目添加一新模块选择Maven Module,填写模块名若空白,catalog目录可选择internal更改包名完
- class文件中的特殊字符串首先说明一下, 所谓的特殊字符串出现在class文件中的常量池中,本着循序渐进和减少跨度的原则, 首先把clas
- package cn.response;import java.awt.Color;import java.awt.Font;import
- 和大家一起分享一下学习经验,如何实现Android文件下载进度显示功能,希望对广大初学者有帮助。先上效果图:上方的蓝色进度条,会根据文件下载
- 关于Android的自定义控件,之前也写了两个,一个是简单地继承View,另一个通过继承Layout实现一个省市联动控件。这篇,将通过继承V
- 1、利用延迟队列延时队列,第一他是个队列,所以具有对列功能第二就是延时,这就是延时对列,功能也就是将任务放在该延时对列中,只有到了延时时刻才
- WPF实现窗体中的悬浮按钮,按钮可拖动,吸附停靠在窗体边缘。控件XAML代码:<Button x:Class="SunCre
- 前言本文主要给大家介绍的是关于Java对xls文件进行读写操作的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:wi
- 本篇给大家详细讲解了MTKAndroid平台开发流程,大致分为44个步骤,我们把每个步骤的命令详细讲解了下,一起来学习下。1.拷贝代码仓库从
- 使用 Spring 时,XML 和注解是使用得最多的两种配置方式,虽然是两种完全不同的配置方式,但对于 IOC 容器来说,两种方式的不同主要
- 摘要本文主要介绍基于SpringBoot定时任务ScheduledTaskRegistrar的动态扩展,实现定时任务的动态新增和删除。Sch
- 不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去一定的精确度。Java在java.math包中提供的API类B
- 第一步、效果展示图1、蓝色的进度条 图2、红色的进度条 图3、多条颜色不同的进度条 图4、多条颜色不同的进度条第二步、自定义Progress
- 这篇文章主要介绍了springboot使用事物注解方式代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 以下是tcp socket客户端和服务端源码,代码简单大家参考使用吧Tcp Server#include <WinSock2.h>
- 一、java final基本概念:1、主要用于修饰类、属性和方法:被final修饰的类不可以被继承被final修饰的方法不可以被重写被fin
- 本文实例为大家分享了使用PageHelper插件实现Service层分页的具体代码,供大家参考,具体内容如下使用场景:平时分页我们可以直接使
- 1.下载安装OpenCVhttps://opencv.org/releases/选择合适的平台安装包下载,然后双击安装,也就是解压的过程。这