定时任务
任务调度是指系统为了自动完成特定任务,在约定的特定时刻去执行任务的过程。有了任务调度即可解放更多的人力,而是由系统自动去执行任务。
Cron表达式
cron表达式是一个字符串, 用来设置定时规则, 由七部分组成, 每部分中间用空格隔开, 每部分的含义如下表所示:
组成部分 | 含义 | 取值范围 |
---|---|---|
第一部分 | seconds(秒) | 0-59 |
第二部分 | minutes(分) | 0-59 |
第三部分 | hours(时) | 0-23 |
第四部分 | day-of-mouth(日) | 根据不同月份变化 |
第五部分 | mouth(月) | 0-11 or JAN-DEC |
第六部分 | day-of-week(星期) | 1-7(1为周日) |
第七部分 | year(年)可选 | / |
特殊符号
符号 | 含义 |
---|---|
? |
表示不确定的值。当表达式中已经指定了一个值,为了避免冲突,就需要把另一个值设为? 比如,设置为每月15号触发,由于15号为确定的但是每月的15号的星期都可能不同因此就需要用?表示 具体写法如下:0 0 0 15 * ?【秒 分 时 日 月 周】 |
* | 代表所有可能的值 |
, | 设置多个值 |
- | 设置取值范围 |
/ | 设置频率或间隔,开始/频率,如"1/15" 假设这个表示的是秒,则代表了从1秒开始每15秒执行一次 |
L |
用于表示每月,或每周,也可以表示每月的最后星期几,即星期L,如"1L",用于表示每月的星期天 0 0 23 L * ? 每月最后一天23点运行一次任务 0 0 23 ? * 7L 每月最后一个星期天23点运行一次任务 |
# | 表示该月的第几个周?,如,"6#3"表示该月的第3个周五,如,0 15 10 ? * 6#3每月的第三个星期五上午10:15运行一次任务 |
Spring Task
Spring Task 是 Spring 框架提供的一个用于处理定时任务的模块。它允许开发者通过简单的注解和配置来定义和管理定时任务,而无需依赖第三方调度框架(如 Quartz)。Spring Task 提供了灵活的调度功能,并且易于集成到 Spring 应用程序中
入门案例:
只要是Spring Boot依赖的项目自动有对应的依赖,
要想定时任务生效,需要在启动类上加上@EnableScheduling
@Component
@Slf4j
public class MyTask {/*** 定时任务 每隔5秒触发一次*/@Scheduled(cron = "0/5 * * * * ?")public void printTime() {log.warn("当前时间:{}", LocalDateTime.now());}
}
基于若依实现定时任务
我们仍需要编写对应的定时任务方法,但是无线添加@Scheduled注解,可以通过若依提供的图形化界面来控制定时任务的执行
找到系统监控-->定时任务,可以新增任务,如下: