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触发

总结

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

相关文章

  • java整合itext pdf实现自定义PDF文件格式导出方式

    java整合itext pdf实现自定义PDF文件格式导出方式

    Spring Boot整合iTextPDF实现自定义PDF导出,按周次和星期显示打卡记录打勾,需定义数据VO、表格结构,确保所有单元格填充(含空值),测试接口生成格式正确的PDF文件
    2025-07-07
  • JAXB命名空间及前缀_动力节点Java学院整理

    JAXB命名空间及前缀_动力节点Java学院整理

    这篇文章主要给大家介绍了关于JAXB命名空间及前缀的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-08-08
  • 详解SpringBoot是如何整合JPA的

    详解SpringBoot是如何整合JPA的

    借助于开发框架,我们已经不用编写原始的访问数据库的代码,也不用调用JDBC或者连接池等诸如此类的被称作底层的代码,我们将从更高的层次上访问数据库,本章我们将详细介绍在Springboot中使用 Spring Data JPA 来实现对数据库的操作,需要的朋友可以参考下
    2021-06-06
  • IDEA maven项目依赖无法解析问题

    IDEA maven项目依赖无法解析问题

    这篇文章主要介绍了IDEA maven项目依赖无法解析问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • java哈夫曼树实例代码

    java哈夫曼树实例代码

    这篇文章主要为大家介绍了java哈夫曼树实例代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Spring AI 入门学习指南

    Spring AI 入门学习指南

    本文介绍了如何使用SpringAI和Ollama进行AI开发,包括如何配置和使用聊天、图像、语音转文字和文字转语音模型,以及如何在Java项目中集成Ollama模型,感兴趣的朋友一起看看吧
    2024-11-11
  • Mybatis @SelectKey用法解读

    Mybatis @SelectKey用法解读

    这篇文章主要介绍了Mybatis @SelectKey用法解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 深入理解Java垃圾回收机制以及内存泄漏

    深入理解Java垃圾回收机制以及内存泄漏

    下面小编就为大家带来一篇深入理解Java垃圾回收机制以及内存泄漏。小编觉得挺不错的,现在就分享给大家,也给的大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • Java排序算法三之归并排序的递归与非递归的实现示例解析

    Java排序算法三之归并排序的递归与非递归的实现示例解析

    这篇文章主要介绍了Java排序算法三之归并排序的递归与非递归的实现示例解析,文章通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • mybatisplus 实现接口MetaObjectHandler自动填充字段值

    mybatisplus 实现接口MetaObjectHandler自动填充字段值

    MetaObjectHandler是MyBatis-Plus提供的一个接口,本文主要介绍了mybatisplus 实现接口MetaObjectHandler自动填充字段值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07

最新评论