SpringBoot自定义定时任务

阅读量: 92 编辑

SpringBoot自定义定时任务

一、自定义定时任务步骤

  • 1、在SBootApplication类上添加注解:@EnableScheduling,启动定时任务

  • 2、创建一个类,并给其中的函数添加 @Scheduled 注解即可

二、代码

1、SbootApplication.java 中加上注解 @EnableScheduling

package com.qicong.sboot;

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

@SpringBootApplication
@EnableScheduling
public class SbootApplication {

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

}

2、自定义定时任务

package com.qicong.sboot.s23;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * User: 祁大聪
 */
@Component
public class S23TaskSchedule {

    @Scheduled(fixedRate = 1000) //1000毫秒=1秒
    public void testTask(){
        System.out.println("current time = " + new Date());
    }

    @Scheduled(cron = "0/2 * * * * 6#4") //第四个星期六执行,每2秒执行一次
    public void testCron(){
        System.out.println("0/2 * * * * 6#4 = " + new Date());
    }

}

三、@Scheduled参数cron指定定时任务

1、corn = [秒] [分] [时] [日] [月] [周] [年]

@Scheduled(cron = "0/5 *  *  *  *  *")

2、参数的值

  • [秒]是0-59,
  • [分]是0-59,
  • [时]是0-23,
  • [日]是1-31,
  • [月]是1-12(JAN-DEC),
  • [周]是1-7 (MON-SUN),
  • [年]不是必须的域,可以省略[年],则一共6个域

3、通配符说明

  • 1、* 表示所有值。全执行
  • 2、- 表示区间。在小时上设置 "1-3",表示 1、2、3点
  • 3、, 表示指定多个值。比如 1,2,3
  • 4、/ 用于递增触发。比如秒上设置:"5/15",从第5秒开始,每增15秒(5,20,35,50)执行一次
  • 5、L 表示最后的意思。比如日上设置:"L",就表示最后一天执行。周上设置"6L",表示最后一个星期五执行。
  • 6、W 表示离指定日期的最近那个工作日(周一至周五)。例如在日字段上设置"15W",表示离每月15号最近的那个工作日触发。只能用在"日"上面
  • 7、# 表示第几个周几。例如 在周字段上设置"5#4",第4个周5。只能用在"周"上面
  • 8、? 表示不指定值