SpringBoot中使用定时任务schedule详解

 更新时间:2025年11月20日 14:43:52   作者:诚ㅤㅤ  
文章介绍了如何在Spring应用中使用@EnableScheduling注解启用定时任务,并创建一个配置类来定义定时任务的执行,文章还详细解释了Cron表达式的基本语法,并提供了多个常用的Cron表达式示例,以帮助读者理解和应用定时任务

1、在spring启动类上添加注解@EnableScheduling

package com.example.springcrontab;

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

@EnableScheduling
@SpringBootApplication
public class SpringCrontabApplication {

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

}

2、创建定时任务配置类

package com.example.springcrontab.config;

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

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @PACKAGE_NAME: com.example.springcrontab.config
 * @NAME: CrontabConfig
 * @USER: MrWang
 * @DATE: 2022/4/11
 **/
@Component
public class CrontabConfig {

    public int a = 0;

    @Scheduled(cron = "*/5 * * * * ?")//设置定时任务执行时间每5秒执行一次
    //@Scheduled注解用来设置定时任务执行时间
    public void crontabDemo(){
        a+=100;
        SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date = sm.format(new Date());
        System.out.println("时间:"+date+"   "+a);
    }

}

3、执行案例结果

4、corn表达式基本语法

cron表达式由6-7个时间域组成,每个时间域之间用空格隔开。

格式:

<秒> <分> <时> <日期> <月> <星期> <年份>​

  • 秒:取值范围0-59
  • 分:取值范围0-59
  • 时:取值范围0-23
  • 日期:每月的的几数,0-31
  • 月:取值范围1-12,或英文简写JAN-DEC
  • 星期:取值范围1~7(其中1从星期天开始) 或英文简写 SUN,MON,TUE,WED,THU,FRI,SAT
  • 年份:可选,取值范围1970-2099

5、常用的定时任务执行表达式

  • 0 0 2 1 * ? * 表示在每月的1日的凌晨2点调整任务
  • 0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业
  • 0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作
  • 0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
  • 0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
  • 0 0 12 ? * WED 表示每个星期三中午12点
  • 0 0 12 * * ? 每天中午12点触发
  • 0 15 10 ? * * 每天上午10:15触发
  • 0 15 10 * * ? 每天上午10:15触发
  • 0 15 10 * * ? * 每天上午10:15触发
  • 0 15 10 * * ? 2005 2005年的每天上午10:15触发
  • 0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
  • 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期间的每1分钟触发
  • 0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发
  • 0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
  • 0 15 10 15 * ? 每月15日上午10:15触发
  • 0 15 10 L * ? 每月最后一日的上午10:15触发
  • 0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发
  • 0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发
  • 0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用axios和spring boot 交互及使用步骤

    使用axios和spring boot 交互及使用步骤

    Axios是一个基于Promise的HTTP库,可以发送get、post等请求,它作用于浏览器和Node.js中,这篇文章主要介绍了使用axios和spring boot 交互及使用步骤,需要的朋友可以参考下
    2025-06-06
  • Java负载均衡服务器实现上传文件同步

    Java负载均衡服务器实现上传文件同步

    这篇文章主要介绍了Java负载均衡服务器实现上传文件同步,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Spring中的Eureka服务过期详细解析

    Spring中的Eureka服务过期详细解析

    这篇文章主要介绍了Spring中的Eureka服务过期详细解析,如果有一些服务过期了,或者宕机了,就不会调用shutdown()方法,也不会去发送请求下线服务实例,需要的朋友可以参考下
    2023-11-11
  • 详解Java策略模式

    详解Java策略模式

    今天给大家带来的是关于Java的相关知识,文章围绕着Java策略模式展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • SpringBoot注解@Import原理之关于ConfigurationClassPostProcessor源码解析

    SpringBoot注解@Import原理之关于ConfigurationClassPostProcessor源码解析

    这篇文章主要介绍了SpringBoot注解@Import原理之关于ConfigurationClassPostProcessor源码解析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • java~springboot~ibatis数组in查询的实现方法

    java~springboot~ibatis数组in查询的实现方法

    这篇文章主要介绍了java~springboot~ibatis数组in查询的实现方法,需要的朋友可以参考下
    2018-09-09
  • Java Lambda表达式语法及用法示例

    Java Lambda表达式语法及用法示例

    这篇文章主要给大家介绍了关于Java Lambda表达式语法及用法的相关资料,lambda表达式是JAVA8中提供的一种新的特性,它支持Java也能进行简单的"函数式编程",文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • JDBC 实现通用的增删改查基础类方法

    JDBC 实现通用的增删改查基础类方法

    下面小编就为大家分享一篇JDBC 实现通用的增删改查基础类方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • mybatis整合ehcache做三级缓存的实现方法

    mybatis整合ehcache做三级缓存的实现方法

    ehcache是一个快速内存缓存框架,java项目里用起来很方便,下面这篇文章主要给大家介绍了关于mybatis整合ehcache做三级缓存的实现方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • Java如何生成随机数不了解下吗

    Java如何生成随机数不了解下吗

    我们在学习 Java 基础时就知道可以生成随机数,可以为我们枯燥的学习增加那么一丢丢的乐趣,本文就来和大家介绍Java生成随机数的常用方法,需要的可以参考下
    2023-08-08

最新评论