Spring Boot 4 Microservices & REST APIs · Lekcja

Harmonogramowanie za pomocą @Scheduled

Uruchamiaj zadania w stałym odstępie lub według cron

Lekcja 1 z 413 kroki

Harmonogramowanie za pomocą @Scheduled to bezpłatna lekcja Spring Boot 4 Microservices & REST APIs na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Spring Boot 4 Microservices & REST APIs, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Spring Boot 4 Microservices & REST APIs zawiera 4 lekcji w sumie.

Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.

Scheduling in Spring Boot

Spring Boot lets you run methods automatically on a schedule without any external cron daemon. You annotate a method with @Scheduled and Spring invokes it repeatedly in the background.

  • Perfect for cleanup jobs, polling, report generation
  • No extra infrastructure needed

Enabling scheduling

Scheduling is off by default. You turn it on with @EnableScheduling on a configuration class (often the main application class).

import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableScheduling
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

fixedRate

fixedRate runs the method at a fixed interval measured from the start of one run to the start of the next. The value is in milliseconds.

@Component
public class RateTask {

    @Scheduled(fixedRate = 5000)
    public void report() {
        System.out.println("Runs every 5 seconds");
    }
}

fixedDelay

fixedDelay waits a fixed gap after the previous run finishes before starting the next one. Use it when runs must never overlap.

@Scheduled(fixedDelay = 5000)
public void process() {
    // next run starts 5s AFTER this one ends
    doWork();
}

fixedRate vs fixedDelay

The key difference is the reference point:

  • fixedRate = interval between start times (can overlap if a run is slow)
  • fixedDelay = gap between end and next start (never overlaps)

initialDelay

initialDelay delays the first execution after startup. Combine it with fixedRate or fixedDelay to avoid running immediately on boot.

@Scheduled(initialDelay = 10000, fixedRate = 5000)
public void warmThenRun() {
    // waits 10s after startup, then every 5s
}

cron expressions

For calendar-based scheduling use cron. Spring cron has 6 fields: second, minute, hour, day-of-month, month, day-of-week.

@Scheduled(cron = "0 0 9 * * MON-FRI")
public void weekdayMorning() {
    // 09:00:00 every weekday
}

Reading cron fields

An asterisk * means "every value". A ? can be used in day-of-month or day-of-week when one is unspecified. Ranges (MON-FRI), lists (1,15) and steps (*/10) are supported.

@Scheduled(cron = "*/30 * * * * *") // every 30 seconds
public void everyHalfMinute() { }

@Scheduled(cron = "0 0 0 1 * *") // midnight on the 1st of every month
public void monthly() { }

Time zones

By default cron uses the server time zone. Set zone to make schedules explicit and predictable across environments.

@Scheduled(cron = "0 0 8 * * *", zone = "Europe/Istanbul")
public void eightAmIstanbul() { }

Externalizing the schedule

Hardcoding intervals is inflexible. Use a property placeholder so the schedule can change per environment without recompiling.

@Scheduled(fixedRateString = "${app.report.rate:5000}")
public void report() { }

// application.yml
// app:
//   report:
//     rate: 10000

Scheduling pitfalls

By default a single thread runs all scheduled tasks, so a slow task can delay others. For parallel execution configure a ThreadPoolTaskScheduler. Also keep scheduled methods idempotent in case of restarts.

Quick Check

Test your understanding of scheduling.

Recap

You learned how to schedule work in Spring Boot:

  • @EnableScheduling turns the feature on
  • fixedRate = start-to-start, fixedDelay = end-to-start
  • cron handles calendar schedules; set zone for clarity
  • Externalize intervals with property placeholders
Bezpłatny start

Ucz się Java dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
24
Lekcje
93

Często zadawane pytania

Czy lekcja „Harmonogramowanie za pomocą @Scheduled” jest bezpłatna?

Tak — pełny tekst „Harmonogramowanie za pomocą @Scheduled” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Spring Boot 4 Microservices & REST APIs, przejdź na CoddyKit PRO. Kurs Spring Boot 4 Microservices & REST APIs zawiera 4 lekcji w sumie.

Co nauczysz się w „Harmonogramowanie za pomocą @Scheduled”?

Uruchamiaj zadania w stałym odstępie lub według cron Ćwiczysz Spring Boot 4 Microservices & REST APIs z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Spring Boot 4 Microservices & REST APIs?

Nie wymagamy żadnego doświadczenia. Spring Boot 4 Microservices & REST APIs w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Harmonogramowanie za pomocą @Scheduled”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Spring Boot 4 Microservices & REST APIs?

Tak. Każda lekcja Spring Boot 4 Microservices & REST APIs zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Harmonogramowanie za pomocą @Scheduled
  2. Zadania i kroki Spring Batch
  3. Czytniki, procesory i zapisy
  4. Ponowne uruchamianie i obsługa błędów
← Powrót do Spring Boot 4 Microservices & REST APIs