欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring boot 定时器task

程序员文章站 2022-06-09 11:04:06
...

项目结构

spring boot 定时器task

创建定时任务类

package com.example.sbtask.task;
import java.util.Date;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Controller;
@Controller
public class TimeTask {

    @Scheduled(cron="0/5 * * * * ?")
    public void timeRemark() {
        System.out.println("你真美"+new Date().getTime()/1000);
    }
}

编写启动器类

package com.example.sbtask;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling// 开启定时任务功能
public class SbtaskApplication {

    public static void main(String[] args) {
        SpringApplication.run(SbtaskApplication.class, args);
    }

}

运行启动器

spring boot 定时器task

task的一些配置

字段

允许值

允许特殊字符

0-59

, - * /

0-59

, - * /

小时

0-23

, - * /

日期

1-31

, - * ? / L W C

月份

1-12或JAN-DEC

, - * /

星期

1-7或SUN-SAT

, - * ? / L C #

年(可选)

留空,1970-2099

, - * /

注意:- 指的是区间

      * 通配符

      ?不想设置的字段

CRON表达式

CRON表达式

含义

0 0 12 * * ?

每天中午12点触发

0 15 10  ? * *

每天上午10点15触发

0 15 10 * * 2019

2019年每天10点15分触发

0 * 14 * * ?

每天下午2点到2点59分每一分钟触发一次

0 0/5 14 * * ?

每天下午2点到2点55分结束,每5分钟触发一次

0 0/5 14,18 * * ?

每天下午2点到2:55和6点到6:55,每5分钟触发一次

0 0-5 14 * * ?

每天下午2点到2:05,每一分钟触发一次

0 10,44 14 ? 3 WED

三月每周三下午2:10分和下午2:44触发

0 15 10 ? * MON-FRI

每个工作日10点15触发

也可以在这里看cron表达式总结

https://blog.csdn.net/qq_43560721/article/details/104801797

配置时注意:

  1. 启动器类上要加@EnableScheduling注解
  2. 定时任务类上要加@Controller注解
  3. 类中的方法上要加@Scheduled注解

CronTrigger配置的完整格式如下:

秒,分,时,日,月,周,年。其中年可以为空,其它的不能为空

 

* 表示所有的值,例如在分的字段上设置*,表示每一分钟都会触发

? 表示不指定值,比如我们设置了月份,而不关心周的字段,那么我们就可以使用?表示。

- 表示区间。如在月份上设置1-2,指的是1,2月份都会触发。

, 表示多个值,如在月上设置1,3,5,6,指的是1,3,5,6月份都会触发。

/ 用于递增触发,如在秒上设置5/15,则表示从5秒开始,每间隔15秒触发一次,相当于(5,20,35,50)

L 表示最后的意思,在日字段上加上L,表示当前的最后一天触发,如果加上数据,如7L,则表示,当月最后一个周日触发。

W 表示离指定日期的最近那个工作日(周一到周五),例如在日字段上加上10W,则表示离10号最近的工作日触发,如果10号是周六,则9号触发,如果10号是周日,则11号触发,如果10号正确是在工作日内,则当前触发。

# 序号(表示每月的第几个周几),例如:在周字段上设置5#3,则表示第三周的周五触发。如果设置成#5,则表示第五周的周六触发,如果没有,则不执行。

L和W是可以同时使用的,如果在日字段上设置LW,则表示当月的最后一个工作日执行。

 

 

 

相关标签: spring boot