@Scheduled
是 Spring 框架中用于声明定时任务的注解。在 Springboot 项目项目中,添加 @EnableScheduling
注解到配置类上,@Scheduled
注解就可以生效
通过 @Scheduled
注解,可以非常方便地在 Spring 应用程序中创建定时任务。
以下是对 @Scheduled
注解中常用参数的讲解:
fixedDelay
:
含义:表示上一次任务执行完毕到下一次任务开始执行之间的延迟时间。
类型:long
,单位为毫秒。
示例:@Scheduled(fixedDelay = 5000)
表示任务执行完毕后等待 5 秒再执行下一次任务。
fixedDelayString
:
含义:与 fixedDelay
类似,但是接收的是一个字符串类型的值,可以方便地通过配置文件来设置。
类型:String
,可以是一个时间表达式(如 "5000" 表示 5 秒)。
示例:@Scheduled(fixedDelayString = "${task.fixedDelay}")
,其中 ${task.fixedDelay}
可以在配置文件中设置。
fixedRate
:
含义:表示两次任务开始执行之间的固定时间间隔,不考虑任务执行的实际时间。
类型:long
,单位为毫秒。
示例:@Scheduled(fixedRate = 5000)
表示每隔 5 秒执行一次任务,无论任务执行了多久。
fixedRateString
:
含义:与 fixedRate
类似,但是接收的是一个字符串类型的值,可以方便地通过配置文件来设置。
类型:String
,可以是一个时间表达式。
示例:与 fixedDelayString 类似,但适用于固定频率的场景。
initialDelay
:
含义:表示首次执行定时任务之前的延迟时间。
类型:long
,单位为毫秒。
示例:@Scheduled(fixedRate = 5000, initialDelay = 10000)
表示首次任务在启动后延迟 10 秒执行,之后每隔 5 秒执行一次。
initialDelayString
:
含义:与 initialDelay
类似,但是接收的是一个字符串类型的值,可以方便地通过配置文件来设置。
类型:String
,可以是一个时间表达式。
示例:与 fixedDelayString
类似,但用于设置首次执行的延迟时间。
cron
:
含义:表示定时任务的执行计划,基于 Unix 系统的 cron
表达式。
类型:String,遵循 cron 表达式的语法规则。
示例:@Scheduled(cron = "0 0/5 * * * ?")
表示每 5 小时的第 0 分钟执行一次任务。
使用 @Scheduled 注解时,通常只需要指定 fixedDelay、fixedRate 或 cron 中的一个,来表示任务的执行计划。如果需要从配置文件中读取这些值,则可以使用带 String 后缀的参数(如 fixedDelayString)。