Nedavno sem naletel na to opombo v @PostConstruct projekta podjetja in bil sem zmeden.
Pregled:
Po posvetovanju je povzetek naslednji:
1. Od specifikacije Java EE5 se uporabljata dve anotaciji, ki vplivata na življenjski cikel servleta, @PostConstruct in @PreDestroy, za spreminjanje metode nestatičnega void(). Obstajata dva načina, kako ga napišeti:
@PostConstruct
public void someMethod(){}
ali
public @PostConstruct void someMethod(){}
Metoda @PostConstruct modified se izvede, ko strežnik naloži servlet, inStrežnik ga bo izvedel le enkrat。 PostConstruct se izvede po konstruktorju in pred metodo init(). Metoda PreDestroy() se izvaja po tem, ko je metoda destroy() intelektualna
Poleg tega spomladi tudi naročilo Konstruktor, @Autowired in @PostConstruct
Pravzaprav lahko iz dobesednega pomena injekcije odvisnosti vemo, da je za vbrizgavanje objekta p v objekt A najprej treba generirati objekt A in objekt p, preden lahko izvedemo injekcijo. Torej, če je članska spremenljivka p anotirana @Autowried razreda A, potem @Autowired vbrizgavanje nastopi po izvedbi metode konstrukcije A.
Če želite izvesti nekatere inicializacijske operacije pri generiranju objekta in te inicializacijske operacije temeljijo na injiciranju odvisnosti, potem tega ne morete izvesti v konstruktorju. Za to lahko uporabite metodo @PostConstruct anotacijami za dokončanje inicializacije, @PostConstruct anotirane metode bodo samodejno klicane po zaključku injiciranja odvisnosti.
Konstruktor >> @Autowired >> @PostConstruct
Primer:
|