定时任务-启动服务立即执行一次,再按照cron表达式等待下一次执行

使用定时任务时,会存在一个小问题,比如当我们设置每30分钟执行一次,但是我们启动服务后不会立即执行,而是下次的30分钟到了才执行 。
解决方式:
增加注解@

定时任务-启动服务立即执行一次,再按照cron表达式等待下一次执行

文章插图
【定时任务-启动服务立即执行一次,再按照cron表达式等待下一次执行】//定时任务(每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("-----------结束定时任务-----------");}
启动服务后,可以发现会立即执行一次
定时任务-启动服务立即执行一次,再按照cron表达式等待下一次执行

文章插图
注意:这样虽然能解决,但是有个缺陷,如果定时任务执行的是耗时操作,比如调用一个远程接口,如果这个接口超时,那服务就会启动失败 。所以我们可以用另外的方式来实现,比如在服务启动成功后执行一次即可 。具体可参考:启动时的几种初始化操作 启动初始化_时光有伱记忆成花的博客-CSDN博客
推荐:通过实现或接口来实现即可