Events, Scheduling, Async und Observability
Worauf die Prüfung abzielt
Events im Prozess, zeitgesteuerte Jobs, asynchrone Ausführung, Diagnose in Produktion.
Das musst du können
ApplicationEventPublisherveröffentlicht Events im Context.@EventListenerreagiert darauf.- Events sind standardmäßig synchron.
@TransactionalEventListenerz. B. mitAFTER_COMMIT.@Scheduled+@EnableSchedulingfür zeitbasierte Jobs.fixedRate= Start-zu-Start.fixedDelay= Ende-zu-nächstem-Start.@Async+@EnableAsyncfür andere Threads.@Asyncist proxy-basiert — Self-Invocation umgeht es.- Actuator: Health, Metrics, Mappings, Beans, Conditions, Scheduled Tasks.
- Endpoints bewusst exponieren und absichern.
Passende Buchkapitel
- Spring Events
- Scheduling and Async
- Final Lesson — Actuator, Observability, Production Diagnostics, and Spring Professional Final Review
- Spring Boot Actuator
Typische Prüfungsfallen
Events sind kein Message Broker — in-process, nicht durable.
@Scheduled ist kein verteiltes Job-System. Jede Instanz kann denselben Job laufen lassen.
@Async teilt Transaction-, Request- oder Security-Context nicht automatisch.
Kurz selbst prüfen
- Synchrone Spring Events?
- Was bedeutet
AFTER_COMMIT? fixedRatevs.fixedDelay?- Warum läuft derselbe Job auf jeder Instanz?
- Welche Actuator-Endpoints besonders schützen?
Musterantworten
Synchron: Publisher wartet, bis Listener durch sind (ohne explizite Async-Konfiguration).
AFTER_COMMIT: Listener erst nach erfolgreichem Commit der umgebenden Transaktion.
fixedRate misst zwischen Starts. fixedDelay zwischen Ende und nächstem Start.
Jede App-Instanz hat eigenes @Scheduled — bei mehreren Pods brauchst du Locking, Idempotenz oder externen Scheduler.
Vorsichtig mit env, beans, configprops, mappings, conditions, loggers, teils metrics — nicht öffentlich exponieren.
Merksatz
Events = etwas ist passiert. Scheduling = Zeit. Async = Threads. Actuator = Produktion sichtbar machen.