0 Tage Serie
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
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
@Component
public class GracefulService implements SmartLifecycle {
private boolean isRunning = false;
@Override
public void start() {
// Initialize heavy resources or connect to message brokers
this.isRunning = true;
}
@Override
public void stop() {
// Custom shutdown logic, e.g., draining queues
this.isRunning = false;
}
@Override
public boolean isRunning() {
return this.isRunning;
}
@Override
public 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.