Annotations Spring PostConstruct et PreDestroy

1. Introduction

Spring nous permet d'attacher des actions personnalisées à la création et à la destruction de haricots. Nous pouvons, par exemple, le faire en implémentant les interfaces InitializingBean et DisposableBean .

Dans ce court tutoriel, nous examinerons une deuxième possibilité: les annotations @PostConstruct et @PreDestroy .

2. @PostConstruct

Spring appelle les méthodes annotées avec @PostConstruct une seule fois, juste après l'initialisation des propriétés du bean . Gardez à l'esprit que ces méthodes s'exécuteront même s'il n'y a rien à initialiser.

La méthode annotée avec @PostConstruct peut avoir n'importe quel niveau d'accès mais elle ne peut pas être statique.

Un exemple d'utilisation de @PostConstruct est le remplissage d' une base de données. Pendant le développement, par exemple, nous pourrions vouloir créer des utilisateurs par défaut:

@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); } }

L'exemple ci-dessus initialisera d'abord UserRepository , puis exécutera la méthode @PostConstruct .

3. @PreDestroy

Une méthode annotée avec @PreDestroy ne s'exécute qu'une seule fois, juste avant que Spring supprime notre bean du contexte d'application.

Comme avec @PostConstruct , les méthodes annotées avec @PreDestroy peuvent avoir n'importe quel niveau d'accès mais ne peuvent pas être statiques.

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

Le but de cette méthode doit être de libérer des ressources ou d'effectuer toute autre tâche de nettoyage avant que le bean ne soit détruit, par exemple la fermeture d'une connexion à la base de données.

4. Java 9+

Notez que les annotations @PostConstruct et @PreDestroy font partie de Java EE. Et comme Java EE est obsolète dans Java 9 et supprimé dans Java 11, nous devons ajouter une dépendance supplémentaire pour utiliser ces annotations:

 javax.annotation javax.annotation-api 1.3.2 

5. Conclusion

Dans ce court didacticiel, nous avons appris à utiliser les annotations @PostConstruct et @PreDestroy .

Comme toujours, tout le code source est disponible sur GitHub.