在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 * * ?

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