QuickStart
-
自定义一个类, 放入IoC容器. 然后在类里面写好自己的定时任务方法, 然后使用
@Scheduled
注解进行配置 -
然后在SpringBootApplication上加上注解
@EnableScheduling
上面就完成了每1s执行一次showTime()方法
Detail
拓展知识:
1. fixedRate
含义: 指定任务以固定的时间间隔执行,不论前一个任务是否完成。任务开始后,间隔固定的时间,下一次任务会再次启动。
-
单位: 毫秒(ms)
-
示例:
@Scheduled(fixedRate = 5000) public void runTask() { // 任务每5秒执行一次 }
在这个示例中,
runTask
方法每隔5秒执行一次,即使上一个任务还未执行完毕,新的任务也会开始执行。
2. fixedDelay
-
含义: 指定任务在前一个任务完成后等待固定的时间间隔,再开始执行下一个任务。也就是说,任务执行的时间间隔是从上一个任务完成后开始计算的。
-
单位: 毫秒(ms)
-
示例:
@Scheduled(fixedDelay = 5000) public void runTaskWithFixedDelay() { // 任务执行完成后等待5秒再执行 }
在这个示例中,
runTaskWithFixedDelay
方法在上一个任务执行完成后,会等待5秒再执行下一次任务。
3. initialDelay
-
含义: 指定任务首次执行的延迟时间。通常与
fixedRate
或fixedDelay
一起使用,表示在应用启动后,等待一段时间再开始第一次执行任务。 -
单位: 毫秒(ms)
-
示例:
@Scheduled(fixedRate = 5000, initialDelay = 10000) public void runTaskWithInitialDelay() { // 应用启动10秒后开始执行,然后每5秒执行一次 }
在这个示例中,
runTaskWithInitialDelay
方法会在应用启动10秒后开始执行,然后每隔5秒执行一次任务。
4. cron
-
含义: 使用Cron表达式定义任务的执行时间。Cron表达式可以非常灵活地定义复杂的时间规则,例如每天的某个时刻、每周的某几天等。
-
单位: Cron表达式由6或7个字段组成,依次表示秒、分钟、小时、日期、月份、星期、年份(可选)。
-
示例:
@Scheduled(cron = "0 0 3 * * ?") public void runTaskWithCron() { // 每天凌晨3点执行 }
在这个示例中,
runTaskWithCron
方法会在每天凌晨3点执行一次。Cron表达式的格式:
特殊符号:
例如,
"0 0/15 8-10 * * *"
表示每天上午8点到10点之间,每15分钟执行一次。-
秒(0–59)
-
分钟(0–59)
-
小时(0–23)
-
日期(1–31)
-
月份(1–12)
-
星期(0–7)(0或7表示星期日)
-
年份(可选)
-
\*
: 任意值 -
,
: 列出枚举值 -
-
: 指定范围 -
/
: 指定间隔 -
?
: 不指定具体值(用于日期和星期字段冲突时)
-
5. zone
-
含义: 指定任务执行时的时区。可以配合
cron
表达式使用,以确保任务在正确的时区执行。 -
示例:
@Scheduled(cron = "0 0 10 * * ?", zone = "America/New_York") public void runTaskWithZone() { // 每天上午10点(纽约时间)执行 }
在这个示例中,
runTaskWithZone
方法会在纽约时间每天上午10点执行。