diff --git a/spring-context/src/main/java/org/springframework/scheduling/support/CronExpression.java b/spring-context/src/main/java/org/springframework/scheduling/support/CronExpression.java index bdb5249ea3c5..68d1cd3fe913 100644 --- a/spring-context/src/main/java/org/springframework/scheduling/support/CronExpression.java +++ b/spring-context/src/main/java/org/springframework/scheduling/support/CronExpression.java @@ -54,7 +54,30 @@ public final class CronExpression { "@weekly", "0 0 0 * * 0", "@daily", "0 0 0 * * *", "@midnight", "0 0 0 * * *", - "@hourly", "0 0 * * * *" + "@hourly", "0 0 * * * *", + "@every_minute", "0 * * * * *", + "@every_2_minutes", "0 */2 * * * *", + "@every_5_minutes", "0 */5 * * * *", + "@every_10_minutes", "0 */10 * * * *", + "@every_15_minutes", "0 */15 * * * *", + "@every_30_minutes", "0 */30 * * * *", + "@every_45_minutes", "0 */45 * * * *", + "@every_2_hours", "0 0 */2 * * *", + "@every_3_hours", "0 0 */3 * * *", + "@every_4_hours", "0 0 */4 * * *", + "@every_6_hours", "0 0 */6 * * *", + "@every_8_hours", "0 0 */8 * * *", + "@every_12_hours", "0 0 */12 * * *", + "@every_weekday", "0 0 0 * * 1-5", + "@work_hours", "0 0 9-17 * * 1-5", + "@lunch_time", "0 0 12 * * 1-5", + "@mid_morning", "0 0 10 * * *", + "@evening", "0 0 18 * * *", + "@weekends", "0 0 0 * * 6,7", + "@last_day_of_month", "0 59 23 L * *", + "@every_quarter", "0 0 0 1 1,4,7,10 *", + "@every_half_year", "0 0 0 1 1,7 *", + "@every_decade", "0 0 0 1 1 */10" }; @@ -158,6 +181,28 @@ private CronExpression(CronField seconds, CronField minutes, CronField hours, *
  • {@code "0 0 0 * * THUL"} = last Thursday of the month at midnight
  • *
  • {@code "0 0 0 ? * 5#2"} = the second Friday in the month at midnight
  • *
  • {@code "0 0 0 ? * MON#1"} = the first Monday in the month at midnight
  • + *
  • {@code "@every_2_minutes"} = Every 2 minutes
  • + *
  • {@code "@every_5_minutes"} = Every 5 minutes
  • + *
  • {@code "@every_10_minutes"} = Every 10 minutes
  • + *
  • {@code "@every_15_minutes"} = Every 15 minutes
  • + *
  • {@code "@every_30_minutes"} = Every 30 minutes
  • + *
  • {@code "@every_45_minutes"} = Every 45 minutes
  • + *
  • {@code "@every_2_hours"} = Every 2 hours
  • + *
  • {@code "@every_3_hours"} = Every 3 hours
  • + *
  • {@code "@every_4_hours"} = Every 4 hours
  • + *
  • {@code "@every_6_hours"} = Every 6 hours
  • + *
  • {@code "@every_8_hours"} = Every 8 hours
  • + *
  • {@code "@every_12_hours"} = Every 12 hours
  • + *
  • {@code "@every_weekday"} = Every weekday at midnight
  • + *
  • {@code "@work_hours"} = Every hour during work hours, Mon-Fri
  • + *
  • {@code "@lunch_time"} = At noon on weekdays
  • + *
  • {@code "@mid_morning"} = At 10 AM every day
  • + *
  • {@code "@evening"} = At 6 PM every day
  • + *
  • {@code "@weekends"} = At midnight on Saturdays and Sundays
  • + *
  • {@code "@last_day_of_month"} = Last day of the month at 11:59 PM
  • + *
  • {@code "@every_quarter"} = First day of each quarter at midnight
  • + *
  • {@code "@every_half_year"} = First day of January and July at midnight
  • + *
  • {@code "@every_decade"} = Every 10 years on Jan 1st at midnight
  • * * *

    The following macros are also supported. @@ -167,6 +212,29 @@ private CronExpression(CronField seconds, CronField minutes, CronField hours, *

  • {@code "@weekly"} to run once a week, i.e. {@code "0 0 0 * * 0"}
  • *
  • {@code "@daily"} (or {@code "@midnight"}) to run once a day, i.e. {@code "0 0 0 * * *"}
  • *
  • {@code "@hourly"} to run once an hour, i.e. {@code "0 0 * * * *"}
  • + *
  • {@code "@every_minute"} = {@code "0 * * * * *"} (Every minute)
  • + *
  • {@code "@every_2_minutes"} = {@code "0 0/2 * * * *"} (Every 2 minutes)
  • + *
  • {@code "@every_5_minutes"} = {@code "0 0/5 * * * *"} (Every 5 minutes)
  • + *
  • {@code "@every_10_minutes"} = {@code "0 0/10 * * * *"} (Every 10 minutes)
  • + *
  • {@code "@every_15_minutes"} = {@code "0 0/15 * * * *"} (Every 15 minutes)
  • + *
  • {@code "@every_30_minutes"} = {@code "0 0/30 * * * *"} (Every 30 minutes)
  • + *
  • {@code "@every_45_minutes"} = {@code "0 0/45 * * * *"} (Every 45 minutes)
  • + *
  • {@code "@every_2_hours"} = {@code "0 0 0/2 * * *"} (Every 2 hours)
  • + *
  • {@code "@every_3_hours"} = {@code "0 0 0/3 * * *"} (Every 3 hours)
  • + *
  • {@code "@every_4_hours"} = {@code "0 0 0/4 * * *"} (Every 4 hours)
  • + *
  • {@code "@every_6_hours"} = {@code "0 0 0/6 * * *"} (Every 6 hours)
  • + *
  • {@code "@every_8_hours"} = {@code "0 0 0/8 * * *"} (Every 8 hours)
  • + *
  • {@code "@every_12_hours"} = {@code "0 0 0/12 * * *"} (Every 12 hours)
  • + *
  • {@code "@every_weekday"} = {@code "0 0 0 * * 1-5"} (Every weekday at midnight)
  • + *
  • {@code "@work_hours"} = {@code "0 0 9-17 * * 1-5"} (Every hour during work hours, Mon-Fri)
  • + *
  • {@code "@lunch_time"} = {@code "0 0 12 * * 1-5"} (At noon on weekdays)
  • + *
  • {@code "@mid_morning"} = {@code "0 0 10 * * *"} (At 10 AM every day)
  • + *
  • {@code "@evening"} = {@code "0 0 18 * * *"} (At 6 PM every day)
  • + *
  • {@code "@weekends"} = {@code "0 0 0 * * 6,7"} (At midnight on Saturdays and Sundays)
  • + *
  • {@code "@last_day_of_month"} = {@code "0 59 23 L * *"} (Last day of the month at 11:59 PM)
  • + *
  • {@code "@every_quarter"} = {@code "0 0 0 1 1,4,7,10 *"} (First day of each quarter at midnight)
  • + *
  • {@code "@every_half_year"} = {@code "0 0 0 1 1,7 *"} (First day of January and July at midnight)
  • + *
  • {@code "@every_decade"} = {@code "0 0 0 1 1 0/10"} (Every 10 years on Jan 1st at midnight)
  • * * @param expression the expression string to parse * @return the parsed {@code CronExpression} object