使用定时任务时,会存在一个小问题,比如当我们设置每30分钟执行一次,但是我们启动服务后不会立即执行,而是下次的30分钟到了才执行。
解决方式:
增加注解@PostConstruct
//定时任务(每30分钟执行一次)
@PostConstruct
@Scheduled(cron = "0 1/30 * * * ?")
private void configureTasks() {log.info("-----------开始定时任务-----------");//业务处理try {log.info("-----------业务处理-----------");Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}log.info("-----------结束定时任务-----------");
}
启动服务后,可以发现会立即执行一次
注意:这样虽然能解决,但是有个缺陷,如果定时任务执行的是耗时操作,比如调用一个远程接口,如果这个接口超时,那服务就会启动失败。所以我们可以用另外的方式来实现,比如在服务启动成功后执行一次即可。具体可参考:SpringBoot启动时的几种初始化操作_springboot 启动初始化_时光有伱记忆成花的博客-CSDN博客
推荐:通过实现CommandLineRunner或ApplicationRunner接口来实现即可
本文发布于:2024-02-04 05:33:07,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170700202152620.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |