java / expert
Snippet
Orchestrierung des Komponenten-Lebenszyklus mit SmartLifecycle
Das SmartLifecycle-Interface ermöglicht es Komponenten, am Lebenszyklus des ApplicationContext teilzunehmen. Es bietet eine feingliedrige Kontrolle über die Reihenfolge, in der Beans starten und stoppen, mittels der 'getPhase'-Methode. Dies ist entscheidend für Komponenten, die darauf angewiesen sind, dass andere Dienste bereits vollständig initialisiert sind.
snippet.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@Componentpublic class GracefulService implements SmartLifecycle {private boolean isRunning = false;@Overridepublic void start() {// Initialize heavy resources or connect to message brokersthis.isRunning = true;}@Overridepublic void stop() {// Custom shutdown logic, e.g., draining queuesthis.isRunning = false;}@Overridepublic boolean isRunning() {return this.isRunning;}@Overridepublic int getPhase() {return Integer.MAX_VALUE; // Defines the startup/shutdown order}}
spring
Erklärung
1
public class GracefulService implements SmartLifecycle
Implementiert das erweiterte Lifecycle-Interface für eine bessere Kontrolle der Bean-Übergänge.
2
public int getPhase()
Gibt eine Ganzzahl zurück, die die Priorität bestimmt; niedrigere Werte starten zuerst und stoppen zuletzt.