Cron

前言

在课上学的感觉挺有用的,之前没有学习过。记录一下万一后面需要了,方便快速回顾

Cron表达式的概述

Cron表达式是一种强大的用于配置定时任务的时间表达式。它由若干个时间字段组成每个字段代表时间的一个特定部分。Cron表达式通常用于操作系统的定时任务调度,以及各种编程语言中的定时任务库。
在实际应用中,Cron表达式可以用于配置数据库备份、系统维护任务、定时发送邮件自动化测试等。

Cron表达式的组成

一个标准的Cron表达式由以下七个时间字段组成,字段之间以空格分隔:

  • 秒(0-59)

  • 分钟 (0-59)

  • 小时(0-23)

  • 月份中的日期(1-31)

  • 月份(1-12)

  • 星期中的日期(0-6或1-7,其中0或7代表星期天)

  • 年份(1970-2099)

特殊字符及其含义

Cron表达式中可以使用一些特殊字符来表示更复杂的时间规则:

* :匹配任意值

?:在月份中的日期和星期中的日期字段中,表示无特定的值,用于与其他字段组合使用。

  • :表示一个范围,如5-20表示5到20。

/ :表示起始时间开始,然后每

隔固定时间,如5/20表示从5开始,每20分钟。

,:用于枚举,如1,5,10表示1日,5日,和10日

L :表示最后,只能在星期中的日期和月份中的日期字段中使用

W :表示有效工作日,只能在月份中的日期字段中使用

LW :连用表示某月最后一个工作日

# :用于确定每个月的第几个星期几,只能在星期中的日期字段中使用

Cron表达式示例

以下是一些Cron表达式的例子及其含义:

0 0 1 3 * ? : 每月的3日的1点整触发

0 15 10 * * ? : 每天的10点15分触发

0 0/5 14 * * ? : 每天的下午2点到下午2点55分之间,每5分钟触发一次。

0 0 10 , 14 , 16 * * ? : 每天的10点、14点、16点触发一次。

0 0,15,30,45 * 1-10 * ? : 每个月前10天每隔15分钟触发一次。

30 0 0 11 ? 2012 : 在2012年1月1日午夜过 30秒的时候触发。

Cron表达式生成器

反正我不想自己老老实实的写,直接去生成器生成就行了

https://www.bejson.com/othertools/cron/

SpringTask 使用方式

  • 导入maven坐标spring-context(已存在)
  • 启动类添加注解@EnableScheduling开启任务调度
  • 自定义定时任务类

举个例子:
每隔五秒触发一次

1
2
3
4
5
6
7
8
9
10
11
@Component
@Slf4j
public class MyTask {
/**
* 定时任务,每隔五秒触发一次
*/
@Scheduled(cron = "0/5 * * * * ?")
public void executeTask(){
log.info("定时任务开始执行:{}",new Date());
}
}