spring调度程序不会在循环之后停止,而是在停止和重新触发之前运行1分钟

nr7wwzry  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(356)
@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中的对象列表后(即;3对象),它进入循环3次(正确)。但是在循环3次后停止cron,它会继续循环1分钟。。
我需要做什么来确保cron每5分钟运行一次,但在完成任务后停止,而不是在1分钟内循环执行同一任务

ijnw1ujt

ijnw1ujt1#

您应该在项目中添加@enablescheduling anotion。
你的亲信每秒钟跑一次(您的cron second值=*)
如果你只想每五分钟工作一次,那就试试: @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框架cronexpression

相关问题