Spring @Scheduled的cron表达式默认使用系统时区还是UTC?
Spring
@Scheduled 注解cron表达式默认时区说明 默认采用应用运行所在服务器的系统默认时区,而非UTC时区。
- 该行为是注解的默认逻辑:只要未通过
@Scheduled的zone属性手动指定时区,框架就会读取当前运行环境的系统默认时区解析cron表达式,计算任务触发时间。 - 若需要固定使用UTC或其他指定时区(比如多节点跨时区部署时保证所有节点任务触发时间一致),必须显式配置
zone参数,使用示例:
// 配置为UTC时区每日12点整执行任务 @Scheduled(cron = "0 0 12 * * *", zone = "UTC") public void scheduledBizTask() { // 编写具体业务逻辑 }
补充:Spring 5.3版本迭代中升级了cron表达式的解析能力,支持了更灵活的cron语法配置,但默认时区的规则没有变更,未手动配置时依然沿用系统默认时区。
内容的提问来源于stack exchange,提问作者Archimedes Trajano
相关产品推荐
相关产品推荐

