Springboot之定时任务


前言

定时发送一些任务,在特定时间执行任务

例如: 定时抢购脚本,定时推送信息等等!

一、定时任务是什么?

定时执行任务,只有电脑不关机就可以在特定的时间去执行相应的代码,例如抢购脚本等

二、使用步骤

1.无需引入springboot自带

        只需在启动类加上注解 开启功能即可

package com.example.spingbootswagger;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableScheduling //开启定时功能的注解
@SpringBootApplication
public class SpingbootSwaggerApplication {

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

}

2.创建配置service类

在配置类上加入:@Service注解

每写一个任务都有加一个    @Scheduled(cron = "") 注解 

package com.example.spingbootswagger.service;


import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
//TaskScheduler 任务调度程序

@Service
public class tasksService {
    // 秒 分 时 天 月 周几~
    // 0 * * * * 0-7  每个月的每天每时每分每秒周一到周七都会执行

    /**
     * 30 15 10 * * ? 每天10点15分30 执行
     *
     * 30 0/5 10,18 * * ? 每天10时18时每个五分钟执行
     * 0 15 10 ? * 1-6 每个月的周一到周六10.15分钟执行一次
     */

    @Scheduled(cron = "0/1 * * * * 0-7")
    public void hello3(){
        System.out.println("每秒打印");
    }

    @Scheduled(cron = "0/2 * * * * 0-7")
    public void hello(){
        System.out.println("每隔两秒打印");
    }

    @Scheduled(cron = "0/3 * * * * 0-7")
    public void hello1(){
        System.out.println("每个三秒打印");

    }
}

      

  3.Cron表达式介绍

Cron表达式是一个具有时间含义的字符串,字符串以5~6个空格隔开,分为6~7个域,格式为X X X X X X X。其中X一个域的占位符。最后一个代表年份的域非必须,可省略。单个域有多个取值时,使用半角逗号,隔开取值。每个域可以是确定的取值,也可以是具有逻辑意义的特殊字符。每个域最多支持一个前导零。

        域取值

        下表为Cron表达式中六个域能够取的值以及支持的特殊字符。

        

是否必要 取值范围 特殊字符
[0,59] * , - /
分钟 [0,59] * , - /
小时 [0,23] * , - /
日期 [1,31] * , - /?L W
月份 [1,12]或[JAN,DEC] * , - /
星期 [1,7]或[MON,SUN]。若用[1,7]表达方式,1代表星期一,7代表星期日 * , - / ? L #
[当前年份,2099] * , - /

                        取值示例

                                        以下为Cron表达式的取值示例。

0 15 10 ? * * 每天上午10:15执行任务
0 15 10 * * ? 每天上午10:15执行任务
0 0 12 * * ? 每天中午12:00执行任务
0 0 10,14,16 * * ? 每天上午10:00点、下午14:00以及下午16:00执行任务
0 0/30 9-17 * * ? 每天上午09:00到下午17:00时间段内每隔半小时执行任务
0 * 14 * * ? 每天下午14:00到下午14:59时间段内每隔1分钟执行任务
0 0-5 14 * * ? 每天下午14:00到下午14:05时间段内每隔1分钟执行任务
0 0/5 14 * * ? 每天下午14:00到下午14:55时间段内每隔5分钟执行任务
0 0/5 14,18 * * ? 每天下午14:00到下午14:55、下午18:00到下午18:55时间段内每隔5分钟执行任务
0 0 12 ? * WED 每个星期三中午12:00执行任务
0 15 10 15 * ? 每月15日上午10:15执行任务
0 15 10 L * ? 每月最后一日上午10:15执行任务
0 15 10 ? * 6L 每月最后一个星期六上午10:15执行任务
0 15 10 ? * 6#3 每月第三个星期六上午10:15执行任务
0 10,44 14 ? 3 WED 每年3月的每个星期三下午14:10和14:44执行任务
0 15 10 ? * * 2022 2022年每天上午10:15执行任务
0 15 10 ? * * * 每年每天上午10:15执行任务
0 0/5 14,18 * * ? 2022 2022年每天下午14:00到下午14:55、下午18:00到下午18:55时间段内每隔5分钟执行任务
0 15 10 ? * 6#3 2022,2023 2022年至2023年每月第三个星期六上午10:15执行任务
0 0/30 9-17 * * ? 2022-2025 2022年至2025年每天上午09:00到下午17:30时间段内每隔半小时执行任务
0 10,44 14 ? 3 WED 2022/2 从2022年开始,每隔两年3月的每个星期三下午14:10和14:44执行任务

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...