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);
    }

}

运行启动器

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,则表示当月的最后一个工作日执行。

 

 

发布了141 篇原创文章 · 获赞 33 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_43560721/article/details/104960484