【发布时间】:2019-08-08 01:20:26
【问题描述】:
我想利用 spring cron 注释在每天三个不同会话中的特定时间间隔内每分钟运行特定服务。
例如: 第一节:上午 8 点 15 分 - 下午 12 点 36 分, 第二场:12:40pm - 3:11pm, 第三场:下午 3:20 - 下午 4:35。
如何设置这个特定示例的 cron 表达式?
我已经在 Oracle 文档中检查了这一点,这是我遇到的最接近的实现
"0 0/5 14,18 * * ? 每 5 分钟触发一次,从下午 2:00 开始,到下午 2:55 结束,并且每 5 分钟触发一次,从下午 6:00 开始,到下午 6:55 结束, 每天”
没有关于不同时间和不同会话之间的间隔的实例
@Scheduled(cron = "0 29-35 11,12 * * ?")
public static void testCron() {
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println("testing cron per minute " + dateFormat.format(date)); }
从上面的测试代码中,它在 11:29 到 11:35 之间打印评论,但在 11:35 之后没有任何内容。下一个打印输出是从 12:29 开始,以此类推。
【问题讨论】:
-
@Scheduled在static方法中不起作用,需要是常规方法。只需添加多个@Scheduled注释即可。 -
这个实现有效。谢谢你