Recent, am dat peste această adnotare într-un @PostConstruct de proiect al companiei și am rămas nedumerit.
Recenzie:
După consultare, rezumatul este următorul:
1. Pornind de la specificația Java EE5, două adnotări care afectează ciclul de viață al servletului, @PostConstruct și @PreDestroy, sunt folosite pentru a modifica o metodă void() nestatică. Există două moduri de a o scrie:
@PostConstruct
public void someMethod(){}
sau
public @PostConstruct void someMethod(){}
Metoda modificată @PostConstruct rulează atunci când serverul încarcă servlet-ul, șiServerul va executa o singură dată。 PostConstruct se execută după constructor și înainte de metoda init(). Metoda PreDestroy() se execută după ce metoda destroy() este intelectuală
În plus, ordinea Constructorului, @Autowired și @PostConstruct primăvara
De fapt, din sensul literal al injecției de dependență, putem ști că pentru a injecta obiectul p în obiectul A, atunci obiectul A și obiectul p trebuie mai întâi generate înainte ca injectarea să poată fi efectuată. Astfel, dacă o variabilă membru p este adnotată @Autowried în clasa A, atunci @Autowired injectare are loc după ce metoda de construcție a lui A este executată.
Dacă vrei să finalizezi unele operații de inițializare când generezi un obiect, iar aceste operații de inițializare depind de injectarea dependenței, atunci nu poți face asta în constructor. Pentru a face acest lucru, poți folosi o metodă @PostConstruct adnotări pentru a finaliza inițializarea, @PostConstruct metodele adnotate vor fi apelate automat după finalizarea injectării de dependență.
Constructor >> @Autowired >> @PostConstruct
Exemplu:
|