Bird
Raised Fist0
Spring Bootframework~5 mins

Cron expressions for scheduling in Spring Boot

Choose your learning style10 modes available
Introduction

Cron expressions help you tell your Spring Boot app when to run tasks automatically. They use simple codes to set times and dates.

Run a report every day at 8 AM without manual work.
Send reminder emails every Monday morning.
Clean up temporary files every hour.
Backup data every night at midnight.
Check system health every 5 minutes.
Syntax
Spring Boot
second minute hour day-of-month month day-of-week year(optional)

Each part is a number or symbol that means when to run.

Use * to mean 'every' for that part, like every minute or every day.

Examples
Run at 8:00 AM every day.
Spring Boot
0 0 8 * * ?
Run at 10:15 AM every weekday (Monday to Friday).
Spring Boot
0 15 10 ? * MON-FRI
Run every 5 minutes during 2 PM and 6 PM every day.
Spring Boot
0 0/5 14,18 * * ?
Run at midnight on January 1st every year.
Spring Boot
0 0 0 1 1 ?
Sample Program

This Spring Boot component runs two tasks automatically. One runs daily at 8 AM, the other runs at 10:15 AM Monday to Friday. The @Scheduled annotation uses cron expressions to set the times.

Spring Boot
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class ScheduledTasks {

    @Scheduled(cron = "0 0 8 * * ?")
    public void runDailyTask() {
        System.out.println("Task runs every day at 8 AM");
    }

    @Scheduled(cron = "0 15 10 ? * MON-FRI")
    public void runWeekdayTask() {
        System.out.println("Task runs at 10:15 AM on weekdays");
    }
}
OutputSuccess
Important Notes

Use '?' in day-of-month or day-of-week to say 'no specific value' when you specify the other.

Seconds are required in Spring cron expressions, unlike some other cron systems.

Test your cron expressions with online tools to avoid mistakes.

Summary

Cron expressions tell Spring Boot when to run tasks automatically.

They use 6 or 7 parts: seconds, minutes, hours, day, month, weekday, and optional year.

Use @Scheduled annotation with cron to schedule methods easily.

Practice

(1/5)
1. What does a cron expression in Spring Boot primarily specify?
easy
A. The output format of the task
B. When a scheduled task should run
C. The name of the scheduled task
D. The priority of the task

Solution

  1. Step 1: Understand the purpose of cron expressions

    Cron expressions define timing details for scheduling tasks.
  2. Step 2: Identify what cron expressions control in Spring Boot

    They tell Spring Boot exactly when to run a method automatically.
  3. Final Answer:

    When a scheduled task should run -> Option B
  4. Quick Check:

    Cron expression = schedule time [OK]
Hint: Cron expressions set task run times, not names or outputs [OK]
Common Mistakes:
  • Thinking cron sets task names
  • Confusing cron with output formatting
  • Assuming cron controls task priority
2. Which of the following is the correct syntax to schedule a method to run every minute using Spring Boot's @Scheduled annotation with a cron expression?
easy
A. @Scheduled(cron = "*/1 * * * *")
B. @Scheduled(cron = "* * * * *")
C. @Scheduled(cron = "0 0/1 * * ?")
D. @Scheduled(cron = "0 * * * * *")

Solution

  1. Step 1: Recall Spring Boot cron format

    Spring Boot cron uses 6 fields: seconds, minutes, hours, day, month, weekday.
  2. Step 2: Identify correct expression for every minute

    "0 * * * * *" means at 0 seconds every minute, every hour, every day.
  3. Final Answer:

    @Scheduled(cron = "0 * * * * *") -> Option D
  4. Quick Check:

    6-field cron with 0 seconds = every minute [OK]
Hint: Spring Boot cron needs 6 fields; seconds first [OK]
Common Mistakes:
  • Using 5-field cron (missing seconds)
  • Misplacing seconds field
  • Using '?' in wrong position
3. Given the cron expression "0 15 10 * * ?" in a Spring Boot @Scheduled annotation, when will the scheduled method run?
medium
A. Every day at 10:15 AM
B. Every hour at 15 minutes past
C. Every day at 10:00 AM
D. Every minute at 15 seconds past

Solution

  1. Step 1: Break down the cron fields

    Fields: seconds=0, minutes=15, hours=10, day=any, month=any, weekday=? (no specific day)
  2. Step 2: Interpret the timing

    Means run at 10:15:00 every day, ignoring weekday.
  3. Final Answer:

    Every day at 10:15 AM -> Option A
  4. Quick Check:

    0 15 10 * * ? = daily 10:15 AM [OK]
Hint: Seconds first, then minutes, then hours in Spring cron [OK]
Common Mistakes:
  • Confusing minutes and hours positions
  • Ignoring '?' meaning in weekday
  • Assuming it runs every hour
4. Identify the error in this Spring Boot cron expression: @Scheduled(cron = "0 0 25 * * ?")
medium
A. Seconds field missing
B. Day of month field is invalid
C. Hour value 25 is invalid
D. Weekday field cannot be '?'

Solution

  1. Step 1: Check each cron field's valid range

    Seconds: 0-59, Minutes: 0-59, Hours: 0-23, Day: 1-31, Month: 1-12, Weekday: 1-7 or ?
  2. Step 2: Identify invalid value

    Hour field is 25, which is outside 0-23 range, causing error.
  3. Final Answer:

    Hour value 25 is invalid -> Option C
  4. Quick Check:

    Hour must be 0-23, 25 is invalid [OK]
Hint: Hours max 23 in cron, check all field ranges [OK]
Common Mistakes:
  • Using hour > 23
  • Forgetting seconds field
  • Misusing '?' in day or weekday
5. You want to schedule a Spring Boot task to run every Monday at 8:30 AM, but only during the months of June, July, and August. Which cron expression correctly achieves this?
hard
A. "0 30 8 ? 6,7,8 MON"
B. "0 30 8 * 6-8 *"
C. "0 30 8 ? 5-8 MON"
D. "0 30 8 ? 6-8 1"

Solution

  1. Step 1: Understand cron fields needed

    Seconds=0, Minutes=30, Hours=8, Day=? (no specific day), Month=6,7,8 (June-Aug), Weekday=MON (Monday)
  2. Step 2: Check options for correct syntax

    "0 30 8 ? 6,7,8 MON" uses '?' for day, lists months as 6,7,8, and weekday as MON, which is correct.
  3. Final Answer:

    "0 30 8 ? 6,7,8 MON" -> Option A
  4. Quick Check:

    Use '?' for day, list months, specify MON weekday [OK]
Hint: Use '?' for day when specifying weekday, list months with commas [OK]
Common Mistakes:
  • Using '*' for day and weekday together
  • Using range '-' instead of commas for months
  • Using numeric weekday instead of MON
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard