定时任务在若依中的应用

定时任务

任务调度是指系统为了自动完成特定任务,在约定的特定时刻去执行任务的过程。有了任务调度即可解放更多的人力,而是由系统自动去执行任务。

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注解,可以通过若依提供的图形化界面来控制定时任务的执行

找到系统监控-->定时任务,可以新增任务,如下:注意调用的方法名不是类名而是bean的名称,因此首字母会变成小写

image-20250228213024685

posted @ 2025-02-28 21:31  zhangfff  阅读(985)  评论(0)    收藏  举报