© DrHitch/Shutterstock.com
Shortcuts
CDI

4 Lifecycle Callbacks


Beim Ablauf des Konstruktors einer CDI Bean ist das entstehende Objekt noch nicht vollständig initialisiert – insbesondere sind die durch Field bzw. Method Injection zu befüllenden Werte noch nicht gesetzt. Insofern ist der Konstruktor für eine Objektinitialisierung nicht geeignet, wenn sie diese Werte benötigt.

Eine CDI Bean darf aber eine parameterlose Methode besitzen, die mit @PostConstruct (javax.annotation.PostConstruct) annotiert ist. Sie wird vom Container aufgerufen, nachdem ein Objekt erzeugt wurde und alle Injektionen durchgeführt wurden. Das ist somit der richtige Platz für Initialisierungen (Listing 4.1).

public class CocktailModel
{
@PostConstruct
public void init()
{
… // beliebige Initialisierungen
}

@PreDestroy
public void cleanup()
{
… // beliebige Initialisierungen
}

Listing 4.1: Lifecycle-Methoden

Es darf nur eine mit @PostConstruct versehene Methode pro Klasse geben. Sie muss den Typ void haben und darf keine Checked Exceptions deklarieren. Die Methode muss nicht public sein. Sollte eine Basisklasse auch eine solche Methode vorweisen, wird sie ebenfalls vom Container aufgerufen, und zwar vor derjenigen der abgeleiteten Klasse.

Analog zu @PostConstruct wirkt @PreDestroy (javax.annotation.PreDestroy) am Ende des Lebenszyklus von Objekten: Bevor sie dem Garbage Collector überlassen werden, laufen noch die PreDestroy-Methoden, in denen beliebiger Code zum Aufräumen platziert werden kann.

Shortcuts
CDI

4 Lifecycle Callbacks

Beim Ablauf des Konstruktors einer CDI Bean ist das entstehende Objekt noch nicht vollständig initialisiert - insbesondere sind die durch Field bzw. Method Injection zu befüllenden Werte noch nicht gesetzt. Insofern ist der Konstruktor für eine Objektinitialisierung nicht geeignet, wenn sie diese Werte benötigt.

Shortcut Autorenteam


Beim Ablauf des Konstruktors einer CDI Bean ist das entstehende Objekt noch nicht vollständig initialisiert – insbesondere sind die durch Field bzw. Method Injection zu befüllenden Werte noch nicht gesetzt. Insofern ist der Konstruktor für eine Objektinitialisierung nicht geeignet, wenn sie diese Werte benötigt.

Eine CDI Bean darf aber eine parameterlose Methode besitzen, die mit @PostConstruct (javax.annotation.PostConstruct) annotiert ist. Sie wird vom Container aufgerufen, nachdem ein Objekt erzeugt wurde und alle Injektionen durchgeführt wurden. Das ist somit der richtige Platz für Initialisierungen (Listing 4.1).

public class CocktailModel
{
@PostConstruct
public void init()
{
… // beliebige Initialisierungen
}

@PreDestroy
public void cleanup()
{
… // beliebige Initialisierungen
}

Listing 4.1: Lifecycle-Methoden

Es darf nur eine mit @PostConstruct versehene Methode pro Klasse geben. Sie muss den Typ void haben und darf keine Checked Exceptions deklarieren. Die Methode muss nicht public sein. Sollte eine Basisklasse auch eine solche Methode vorweisen, wird sie ebenfalls vom Container aufgerufen, und zwar vor derjenigen der abgeleiteten Klasse.

Analog zu @PostConstruct wirkt @PreDestroy (javax.annotation.PreDestroy) am Ende des Lebenszyklus von Objekten: Bevor sie dem Garbage Collector überlassen werden, laufen noch die PreDestroy-Methoden, in denen beliebiger Code zum Aufräumen platziert werden kann.

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang