@Scheduled中的参数及Cron时间表达式用法详解

 更新时间:2026年05月09日 10:19:43   作者:Nvr:4ever  
在SpringBoot中使用@Scheduled注解设置定时任务,可设置fixedDelay、fixedRate、initialDelay和cron参数,首句概括,后续分条列出参数解释和Cron表达式格式,最后给出示例

在Spring Boot中设置定时任务时,可以使用注解@Scheduled。

@Scheduled注解可以用于标记一个方法,表示该方法需要定时执行。

该注解提供了多种参数用于设置定时任务的执行时间和频率。

@Scheduled中的参数解释

  • fixedDelay:间隔时间,表示多少毫秒之后执行。
  • fixedRate:频率,表示每隔多少毫秒执行一次。如果任务执行时间超过了指定的频率,则会等待任务执行完毕后再执行下一次任务。
  • initialDelay:初始延迟时间,表示在应用启动后多久开始执行定时任务,单位为毫秒。默认为0。
  • cron:用于设置高度定制化的执行时间。支持Cron表达式,例如0 * * * * ?表示每分钟执行一次。

以下是代码示例:

  1. 每3秒执行一次任务:
	@Scheduled(fixedDelay = 3000) 
	public void task() { 
		// todo 
	}
  1. 每隔5秒执行一次任务:
	@Scheduled(fixedRate = 5000) 
	public void task() { 
		// todo 
	}
  1. 延迟2秒后开始执行任务:
	@Scheduled(initialDelay = 2000) 
	public void task() { 
		// todo 
	}
  1. 使用Cron表达式每天凌晨2点执行任务:
	@Scheduled(cron = "0 0 2 * * ?") 
	public void task() { 
		// todo 
	}

cron时间表达式

cron表达式是一种时间表达式,可以用于表示基于时间的任务调度。它由6个时间部分组成,分别表示秒、分、时、日期、月份和星期,在不同的位置上使用不同的符号来表示取值范围或取值。

下面是一个cron表达式的格式: 秒 分 时 日 月 周 计划执行的命令或脚本

常用的时间符号有以下几种:

  • 星号(*): 表示所有值,例如在小时的位置上设置星号就表示每个小时都会执行。
  • 逗号(,): 表示枚举值,多个值之间用逗号隔开。
  • 中横线(-): 表示范围,例如在小时的位置上设置为 5-10 就表示 从5到10小时都会被执行。
  • 斜杠(/): 表示步长,例如在小时的位置上设置为 */2 就表示每隔2小时执行一次。

示例:

1.每天凌晨1点执行定时任务:
0 0 1 * * ?

2.每隔30分钟执行一次定时任务:
0 0/30 * * * ?

3.在工作日上午9点到下午5点之间,每隔2分钟执行一次定时任务:
0 0/2 9-17 * * MON-FRI

4.每周日晚上10点执行定时任务:
0 0 22 * * SUN

5.每个月最后一天的晚上11点执行定时任务:
0 0 23 L * ?

6.每个季度的第一个月的第一天早上6点执行定时任务:
0 0 6 1 JAN,APR,JUL,OCT ?

7.每天早上6点到晚上10点之间,每小时5分钟执行一次定时任务:
0 5 6-22/1 * * ?

注:以上示例中,问号(?)表示不指定具体值,星号(*)表示任意值。具体每个元素的定义可查阅相关文档。

总结

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

相关文章

  • java中对象的序列化与反序列化深入讲解

    java中对象的序列化与反序列化深入讲解

    这篇文章主要给大家介绍了关于java中对象的序列化与反序列化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • Java volatile与锁机制对比案例分析

    Java volatile与锁机制对比案例分析

    文章主要介绍了Java中的volatile和锁机制,并通过一个多线程案例来对比它们的优缺点,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • struts2实现文件下载功能

    struts2实现文件下载功能

    这篇文章主要为大家详细介绍了struts2实现文件下载功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • SpringBoot bean查询加载顺序流程详解

    SpringBoot bean查询加载顺序流程详解

    当你在项目启动时需要提前做一个业务的初始化工作时,或者你正在开发某个中间件需要完成自动装配时。你会声明自己的Configuration类,但是可能你面对的是好几个有互相依赖的Bean
    2023-03-03
  • maven实现docker自动化部署插件的使用

    maven实现docker自动化部署插件的使用

    本文主要介绍了maven实现docker自动化部署插件的使用,分享给大家,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • java多线程抓取铃声多多官网的铃声数据

    java多线程抓取铃声多多官网的铃声数据

    很容易就能发现通过改变 listId和page就能从服务器获取铃声的json数据, 通过解析json数据, 可以看到都带有{"hasmore":1,"curpage":1}这样子的指示,通过判断hasmore的值,决定是否进行下一页的抓取。 但是通过上面这个链接返回的json中不带有铃声的下载地址
    2016-04-04
  • 浅谈Spring Cloud Ribbon的原理

    浅谈Spring Cloud Ribbon的原理

    这篇文章主要介绍了浅谈Spring Cloud Ribbon的原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Sleuth+logback 设置traceid 及自定义信息方式

    Sleuth+logback 设置traceid 及自定义信息方式

    这篇文章主要介绍了Sleuth+logback 设置traceid 及自定义信息方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 使用springmvc配置视图解析器和重定向方式

    使用springmvc配置视图解析器和重定向方式

    这篇文章主要介绍了使用springmvc配置视图解析器和重定向方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 详解springboot整合ueditor踩过的坑

    详解springboot整合ueditor踩过的坑

    这篇文章主要介绍了详解springboot整合ueditor踩过的坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06

最新评论