Plannen met @Scheduled
Voer taken uit met een vast interval of cron-schema.
Plannen met @Scheduled is een gratis Spring Boot 4-microservices en REST-API's-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Spring Boot 4-microservices en REST-API's. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Spring Boot 4-microservices en REST-API's bevat in totaal 4 lessen.
Plannen in Spring Boot
Met Spring Boot kun je methoden automatisch volgens een planning uitvoeren zonder een externe cron-daemon. Je annoteert een methode met @Scheduled en Spring roept deze herhaaldelijk op de achtergrond aan.
- Ideaal voor opruimtaken, peilingen en het genereren van rapporten
- Geen extra infrastructuur nodig
Plannen inschakelen
Plannen staat standaard uit. Schakel het in met @EnableScheduling op een configuratieklasse, vaak de hoofdklasse van de app.
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 voert de methode uit met een vast interval, gemeten van het begin van de ene uitvoering tot het begin van de volgende. De waarde is in milliseconden.
@Component
public class RateTask {
@Scheduled(fixedRate = 5000)
public void report() {
System.out.println("Runs every 5 seconds");
}
}fixedDelay
fixedDelay wacht een vaste periode nadat de vorige uitvoering is voltooid voordat de volgende begint. Gebruik dit wanneer uitvoeringen nooit mogen overlappen.
@Scheduled(fixedDelay = 5000)
public void process() {
// next run starts 5s AFTER this one ends
doWork();
}fixedRate versus fixedDelay
Het belangrijkste verschil is het referentiepunt:
fixedRate= interval tussen begintijden (uitvoeringen kunnen overlappen als een uitvoering langzaam is)fixedDelay= periode tussen het einde en het volgende begin (overlap is onmogelijk)
initialDelay
initialDelay stelt de eerste uitvoering na het opstarten uit. Combineer dit met fixedRate of fixedDelay om te voorkomen dat de taak meteen bij het opstarten wordt uitgevoerd.
@Scheduled(initialDelay = 10000, fixedRate = 5000)
public void warmThenRun() {
// waits 10s after startup, then every 5s
}cron-expressies
Gebruik voor planning op basis van de kalender cron. Spring cron heeft 6 velden: seconde, minuut, uur, dag van de maand, maand en dag van de week.
@Scheduled(cron = "0 0 9 * * MON-FRI")
public void weekdayMorning() {
// 09:00:00 every weekday
}Cron-velden lezen
Een sterretje * betekent "elke waarde". Je kunt ? gebruiken in dag van de maand of dag van de week wanneer een van beide niet is opgegeven. Bereiken (MON-FRI), lijsten (1,15) en stappen (*/10) worden ondersteund.
@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() { }Tijdzones
Standaard gebruikt cron de tijdzone van de server. Stel zone in om planningen expliciet en voorspelbaar te maken in verschillende omgevingen.
@Scheduled(cron = "0 0 8 * * *", zone = "Europe/Istanbul")
public void eightAmIstanbul() { }De planning extern configureren
Hardgecodeerde intervallen zijn inflexibel. Gebruik een eigenschapsplaceholder, zodat de planning per omgeving kan veranderen zonder opnieuw te compileren.
@Scheduled(fixedRateString = "${app.report.rate:5000}")
public void report() { }
// application.yml
// app:
// report:
// rate: 10000Valkuilen bij plannen
Standaard voert één thread alle geplande taken uit, waardoor een trage taak andere taken kan vertragen. Configureer voor parallelle uitvoering een ThreadPoolTaskScheduler. Zorg er ook voor dat geplande methoden idempotent zijn voor het geval de app opnieuw wordt gestart.
Korte kennistest
Test je begrip van plannen.
Samenvatting
Je hebt geleerd hoe je werk plant in Spring Boot:
@EnableSchedulingschakelt de functie infixedRate= van begin tot begin,fixedDelay= van einde tot begincronverwerkt kalenderschema's; stelzonein voor duidelijkheid- Maak intervallen extern configureerbaar met eigenschapsplaceholders
Leer Java met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 24
- Lessen
- 93
Veelgestelde vragen
Is de les “Plannen met @Scheduled” gratis?
Ja — de volledige tekst van “Plannen met @Scheduled” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Spring Boot 4-microservices en REST-API's wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Spring Boot 4-microservices en REST-API's bevat in totaal 4 lessen.
Wat leer ik in “Plannen met @Scheduled”?
Voer taken uit met een vast interval of cron-schema. Je oefent met Spring Boot 4-microservices en REST-API's door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Spring Boot 4-microservices en REST-API's te beginnen?
Ervaring vooraf is niet nodig. Spring Boot 4-microservices en REST-API's op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “Plannen met @Scheduled”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Spring Boot 4-microservices en REST-API's?
Ja. Elke les over Spring Boot 4-microservices en REST-API's bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Plannen met @Scheduled
- Spring Batch-jobs en -stappen
- Readers, processors en writers
- Herstarten en foutafhandeling