SpringBoot添加定时任务

2023-01-08 10:16:19

配置使用

1.启动类上添加@EnableScheduling注解,开启定时任务功能

@SpringBootApplication
@EnableScheduling
public class SanGengBlogApplication {
    public static void main(String[] args) {
        SpringApplication.run(SanGengBlogApplication.class,args);
    }
}

2.定时任务执行代码

@Component //注入spring容器
public class TestJob {

    @Scheduled(cron = "0/5 * * * * ?")
    //标识需要定时执行的diamagnetic,注解cron配置任务的执行时间
    public void testJob(){
        //要执行的代码
        System.out.println("定时任务执行了");
    }
}

cron表达式

cron表达式是用来设置定时任务执行时间的表达式。
在线Cron表达式生成器帮助理解cron表达式。
cron表达式由七部分组成,中间由空格分隔,这七部分从左往右依次是:
秒(059),分钟(059),小时(0~23),日期(1-月最后一天),月份(1-12),星期几(1-7,1表示星期日),年份(一般该项不设置,直接忽略掉,即可为空值)
通用特殊字符:

*星号表示任意值
,可以用来定义列表
-定义范围
/ 每隔多少

* * * * * ?
表示 “ 每年每月每天每时每分每秒 ” 

1,2,3 * * * * ?
表示 “ 每年每月每天每时每分的每个第1秒,第2秒,第3秒 ” 

1-3 * * * * ?
表示 “ 每年每月每天每时每分的第1秒至第3秒 ”

5/10 * * * * ?
表示 “ 每年每月每天每时每分,从第5秒开始,每10秒一次 ”
“ / ” 的左侧是开始值,右侧是间隔。如果是从 “ 0 ” 开始的话,也可以简写成 “ /10

日期部分还可允许特殊字符: ? L W

? 日期和星期部分可以使用,表示没有具体的值
注意冲突:日期和星期两个部分如果其中一个部分设置了值,另一个必须设置为?

0\* * * 2 * ?0\* * * ? * 2* * * 2 * 2  ×
* * * ? * ?  ×

W 表示当月中最接近某天的工作日

0 0 0 31W * ?
表示最接近31号的工作日,如果31号是星期六,则表示30号,即星期五,如果31号是星期天,则表示29号,即星期五。如果31号是星期三,则表示31号本身,即星期三。

L 表示最后
日期中表示每月的最后一天, L-2表示每个月的倒数第2天
星期中表示星期六(因为在星期中7表示星期六)

 0 0 0 LW * ?
 LW可以连起来用,表示每月最后一个工作日,即每月最后一个星期五

0 0 0 ? * L
表示每个星期六

0 0 0 ? * 6L
若前面有其他值的话,则表示最后一个星期几,即每月的最后一个星期五

星期部分还可允许的特殊字符: ? L #

#表示第几个星期几

0 0 0 ? * 6#3
表示每个月的第三个星期五。
  • 作者:言烬
  • 原文链接:https://blog.csdn.net/weixin_43994244/article/details/127359434
    更新时间:2023-01-08 10:16:19