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.