首页 > 解决方案 > Spring Scheduler 在一天的不同时间运行

问题描述

我有一个要求,我的调度程序必须在每天上午 9 点到下午 12 点之间每小时运行一次,然后分别在下午 3 点和下午 5 点运行一次。

如何使我的 CRON 表达式根据要求工作到目前为止,我已经尝试使用以下 cron 表达式

@Scheduled(cron="0 0 9-12 * * *")

但这从上午 9 点到下午 12 点每小时运行一次我如何修改它以使其在下午 3 点和下午 5 点也运行一次。

我已经尝试通过组合两个如下所示的 cron 表达式,但是这很有效。

@Scheduled(cron="0 0 9-12 * * *, 0 0 3 * * *")

我可以通过 2 个 @Scheduled 给出 2 个 cron 表达式,如下所示

@Scheduled(cron="0 0 9-12 * * *")
@Scheduled(cron="0 0 9-12 * * *")
public void myMethod() {}

这会是一个可行的解决方案吗?

有人可以帮我吗?

标签: spring-bootcronscheduled-tasksjob-schedulingspring-scheduled

解决方案


@Schedules 注解可用于设置多个基于日历的计时器表达式。

这个注解将摆脱多次编写同一个方法的冗余。

在以下示例中,第一个表达式将计时器设置为在每个月的最后一天到期。第二个表达式将计时器设置为每周五晚上 11:00 到期。

@Schedules ({
    @Schedule(dayOfMonth="Last"),
    @Schedule(dayOfWeek="Fri", hour="23")
})
public void doPeriodicCleanup() { ... }

推荐阅读