Spring 调度程序不会在循环后停止,但 运行 在停止并重新触发前 1 分钟

Spring Scheduler wont stop after loop but run for 1 minute before stop and re trigger

@Slf4j
@Component
public class ABScheduler {

  @Autowired
  private ABService abService;

  @Scheduled(cron="* */5 * * * *")
  private void testCron(){

     String hour = "01";

     List<Object1> object1List = new ArrayList<>(abService.getListOfobject(hour));

     for(Object1 object1: object1List ){
         System.out.println("object " +object1);
     }

     log.info("Cron finish run at "+ new Timestamp(System.currentTimeMillis()) );

  }
}

我是这个调度程序的新手 spring,我发现很难让它在 for 循环后停止。 得到object1List中的object列表后(即;3个object),进入循环3次(正确)。但是在循环 3 次后停止 cron,它再次循环持续 1 分钟..

我需要做什么来确保 cron 运行 每 5 分钟一次,但在完成任务后停止,而不是让同一任务循环 1 分钟

您应该在项目中添加@EnableScheduling注解。

您的 cron 每秒运行一次。 (您的 cron 秒值 = *)

如果您只想每五分钟工作一次,请尝试:@Scheduled(cron="0 */5 * * * *")

cron 格式:

   ┌───────────── second (0-59)
   │ ┌───────────── minute (0 - 59)
   │ │ ┌───────────── hour (0 - 23)
   │ │ │ ┌───────────── day of the month (1 - 31)
   │ │ │ │ ┌───────────── month (1 - 12) (or JAN-DEC)
   │ │ │ │ │ ┌───────────── day of the week (0 - 7)
   │ │ │ │ │ │          (0 or 7 is Sunday, or MON-SUN)
   │ │ │ │ │ │
   * * * * * *

资源:Spring Framework CronExpression