@Scheduled 定时任务不生效原因

@Scheduled定时任务 不生效原因及解决办法

1.问题描述

在我们系统设计过程中,需要用到定时器,这时候我们用到了spring的Scheduled。系统逻辑为在每天的23:00:00( @Scheduled(cron = “0 0 23 * * ?”) )定时检测系统数据,并进行备份。用到的是cron表达式,自己测试定时器都是正常运行,可是一到测试那边定时器起作用,到了时间点一点变化都没有。
给大家安利一个在线网站,用于定时任务配置https://cron.qqe2.com,可以选择时间,系统自动生成表达式。

2.问题复现

经过一系列的排查发现,原来是测试过程中,测试先将服务启动。然后再手动调整服务器本地时间为22:59:00秒,等23点的时候,看定时任务是否执行。 因为,spring的定时器是在服务启动初始化的时候,便已经指定了下一次定时任务执行的时间,这时候手动去调整本地时间是没有效果的。

3.问题解决

我们在查看代码中可以看到,Scheduled 定时器中使用的是相对时间,即是不会随着本地时间变动而做出动态变化,在项目启动时候,便缓存了本地时间到系统服务中,后面再更改本地时间是没有效果的。
解决方案: 先把本地时间改为自己想要的时间,然后再重启服务。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值