Spring PostConstruct- und PreDestroy-Anmerkungen

1. Einleitung

Mit Spring können wir benutzerdefinierte Aktionen an die Erstellung und Zerstörung von Bohnen anhängen. Wir können dies beispielsweise tun, indem wir die Schnittstellen InitializingBean und DisposableBean implementieren.

In diesem kurzen Tutorial sehen wir uns eine zweite Möglichkeit an: die Annotationen @PostConstruct und @PreDestroy .

2. @PostConstruct

Spring ruft Methoden, die mit @PostConstruct kommentiert wurden, nur einmal unmittelbar nach der Initialisierung der Bean-Eigenschaften auf . Beachten Sie, dass diese Methoden auch dann ausgeführt werden, wenn nichts zu initialisieren ist.

Die mit @PostConstruct kommentierte Methode kann eine beliebige Zugriffsebene haben, jedoch nicht statisch sein.

Ein Beispiel für die Verwendung von @PostConstruct ist das Auffüllen einer Datenbank. Während der Entwicklung möchten wir beispielsweise einige Standardbenutzer erstellen:

@Component public class DbInit { @Autowired private UserRepository userRepository; @PostConstruct private void postConstruct() { User admin = new User("admin", "admin password"); User normalUser = new User("user", "user password"); userRepository.save(admin, normalUser); } }

Im obigen Beispiel wird zuerst UserRepository initialisiert und dann die @ PostConstruct- Methode ausgeführt.

3. @PreDestroy

Eine mit @PreDestroy kommentierte Methode wird nur einmal ausgeführt, kurz bevor Spring unsere Bean aus dem Anwendungskontext entfernt.

Wie bei @PostConstruct können die mit @PreDestroy kommentierten Methoden jede Zugriffsebene haben, aber nicht statisch sein.

@Component public class UserRepository { private DbConnection dbConnection; @PreDestroy public void preDestroy() { dbConnection.close(); } }

Der Zweck dieser Methode sollte darin bestehen, Ressourcen freizugeben oder andere Bereinigungsaufgaben auszuführen, bevor die Bean zerstört wird, z. B. das Schließen einer Datenbankverbindung.

4. Java 9+

Beachten Sie, dass beide @PostConstruct und @PreDestroy Anmerkungen Teil von Java EE sind. Und da Java EE in Java 9 veraltet und in Java 11 entfernt wurde, müssen wir eine zusätzliche Abhängigkeit hinzufügen, um diese Anmerkungen zu verwenden:

 javax.annotation javax.annotation-api 1.3.2 

5. Schlussfolgerung

In diesem kurzen Tutorial haben wir gelernt, wie Sie die Anmerkungen @PostConstruct und @PreDestroy verwenden .

Wie immer ist der gesamte Quellcode auf GitHub verfügbar.