Récemment, je suis tombé sur cette annotation dans un @PostConstruct de projet d’entreprise et j’étais perplexe.
Révision:
Après consultation, le résumé est le suivant :
1. À partir de la spécification Java EE5, deux annotations affectant le cycle de vie du servlet, @PostConstruct et @PreDestroy, sont utilisées pour modifier une méthode void() non statique. Il y a deux façons de l’écrire :
@PostConstruct
public void someMethod(){}
ou
public @PostConstruct void someMethod(){}
La méthode modifiée @PostConstruct s’exécute lorsque le serveur charge le servlet, etIl ne sera exécuté qu’une seule fois par le serveur。 PostConstruct est exécuté après le constructeur et avant la méthode init(). La méthode PreDestroy() s’exécute après que la méthode destroy() soit intellectuelle
De plus, l’ordre de Constructor, @Autowired et @PostConstruct au printemps
En fait, à partir du sens littéral de l’injection de dépendance, on peut savoir que pour injecter l’objet p dans l’objet A, alors l’objet A et l’objet p doivent d’abord être générés avant que l’injection puisse être effectuée. Ainsi, si une variable membre p est annotée @Autowried dans la classe A, alors @Autowired’injection a lieu après l’exécution de la méthode de construction de A.
Si vous souhaitez effectuer certaines opérations d’initialisation lors de la génération d’un objet, et que ces opérations d’initialisation dépendent de l’injection de dépendances, alors vous ne pouvez pas le faire dans le constructeur. Pour ce faire, vous pouvez utiliser une méthode @PostConstruct annotations pour compléter l’initialisation, @PostConstruct les méthodes annotées seront automatiquement appelées une fois l’injection de dépendance terminée.
Constructeur >> @Autowired >> @PostConstruct
Exemple:
|