Spring cron expression for every day 1:01:am

后端 未结 6 887
南方客
南方客 2020-11-28 00:08

I\'m trying to have my code execute on a fixed schedule, based on a Spring cron expression. I would like the code to be executed every day at 1:01:am. I tried the following

相关标签:
6条回答
  • 2020-11-28 00:38

    Something missing from gipinani's answer

    @Scheduled(cron = "0 1 1,13 * * ?", zone = "CST")
    

    This will execute at 1.01 and 13.01. It can be used when you need to run the job without a pattern multiple times a day.

    And the zone attribute is very useful, when you do deployments in remote servers. This was introduced with spring 4.

    0 讨论(0)
  • 2020-11-28 00:42

    One thing i've noticed is: spring CronTrigger is not cron. You may end up with 7 parameters in a valid cron expression (wich you can validate on cronmaker.com) and then spring not accept it. Most of cases you just delete the last parameter and everything works fine.

    0 讨论(0)
  • 2020-11-28 00:48

    Try with:

    @Scheduled(cron = "0 1 1 * * ?")
    

    Below you can find the example patterns from the spring forum:

    * "0 0 * * * *" = the top of every hour of every day.
    * "*/10 * * * * *" = every ten seconds.
    * "0 0 8-10 * * *" = 8, 9 and 10 o'clock of every day.
    * "0 0 8,10 * * *" = 8 and 10 o'clock of every day.
    * "0 0/30 8-10 * * *" = 8:00, 8:30, 9:00, 9:30 and 10 o'clock every day.
    * "0 0 9-17 * * MON-FRI" = on the hour nine-to-five weekdays
    * "0 0 0 25 12 ?" = every Christmas Day at midnight
    

    Cron expression is represented by six fields:

    second, minute, hour, day of month, month, day(s) of week
    

    (*) means match any

    */X means "every X"

    ? ("no specific value") - useful when you need to specify something in one of the two fields in which the character is allowed, but not the other. For example, if I want my trigger to fire on a particular day of the month (say, the 10th), but I don't care what day of the week that happens to be, I would put "10" in the day-of-month field and "?" in the day-of-week field.

    PS: In order to make it work, remember to enable it in your application context: https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/scheduling.html#scheduling-annotation-support

    0 讨论(0)
  • 2020-11-28 00:50

    You can use annotate your method with @Scheduled(cron ="0 1 1 * * ?").

    0 - is for seconds

    1- 1 minute

    1 - hour of the day.

    0 讨论(0)
  • 2020-11-28 00:55

    For my scheduler, I am using it to fire at 6 am every day and my cron notation is:

    0 0 6 * * *
    

    If you want 1:01:am then set it to

    0 1 1 * * *
    

    Complete code for the scheduler

    @Scheduled(cron="0 1 1 * * *")
    public void doScheduledWork() {
        //complete scheduled work
    }
    

    ** VERY IMPORTANT

    To be sure about the firing time correctness of your scheduler, you have to set zone value like this (I am in Istanbul):

    @Scheduled(cron="0 1 1 * * *", zone="Europe/Istanbul")
    public void doScheduledWork() {
        //complete scheduled work
    }
    

    You can find the complete time zone values from here.

    Note: My Spring framework version is: 4.0.7.RELEASE

    0 讨论(0)
  • 2020-11-28 00:55

    Spring cron expression for every day 1:01:am

    @Scheduled(cron = "0 1 1 ? * *")

    for more information check this information:

    https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm

    0 讨论(0)
提交回复
热议问题