2017-07-16 91 views
1

我想安排一个在午夜每天运行的任务。我跟着从春official guide和下面进行调度类:春季日程安排 - 每天午夜不工作的Cron表达式?

@Component 
    public class OverduePaymentScheduler {  

     @Scheduled(cron = "0 0 0 * * *") 
     public void trackOverduePayments() { 

       System.out.println("Scheduled task running"); 

     } 
    } 

但是当钟打上午12点的任务不会运行。我从这个link的石英调度程序的文档中获得了cron表达式。

如果我将cron表达式更改为每10秒运行一次的“*/10 * * * * *”,则调度程序执行得很好。

那么我做错了什么?

回答

0

我终于得到它与这个cron表达式0 0 0 * * *,但我必须像这样在调度程序类中设置时区。 @Scheduled(cron = "0 0 0 * * *",zone = "Indian/Maldives")

3

请使用以下的cron模式为每天12:00 AM:

// at 12:00 AM every day 
    @Scheduled(cron="0 0 0 * * ?") 

我已经检查在这个网站你的cron模式:http://www.cronmaker.com/

它说模式0 0 0 * * *为无效。

+0

我试过这个,但它不工作。我欣赏帮助。 –

+0

我在我的项目中使用了这个cron模式。它工作得很好......我现在也通过改变我的系统时钟时间到11:59 PM进行测试,并且在上午12:00自动触发调度器。 –

5

这些是cron的表达式有效格式:

  • 0 0 * * * * =每一天的每一个小时的顶部。
  • */10 * * * * * =每十秒钟一次。
  • 0 0 8-10 * * * =每天8点,9点和10点。
  • 0 0 6,19 * * * =每天上午6:00和晚上7:00。
  • 0 0/30 8-10 * * * =上午8点,8点,9点,9点30分,10点和10点30分,每 天。
  • 0 0 9-17 * * MON-FRI =上一小时的朝九晚五工作日
  • 0 0 0 25 12 ? =每一个圣诞节午夜

的模式是:

second, minute, hour, day, month, weekday 

所以你的答案是:

0 0 12 * * * 
+1

我恐怕表达式是每天下午12点 –

+1

对不起。 ...我以为你想在12日(当天中午)...你必须用24而不是12 ... –