Nemrég egy céges projektben találkoztam ezzel a jegyzettel@PostConstruct és teljesen értetlenül értem.
Szemle:
Konzultáció után az összefoglaló a következő:
1. A Java EE5 specifikációtól kezdve két annotációt, amelyek befolyásolják a szervlet életciklusát, a @PostConstruct és a @PreDestroy, egy nem-statikus void() módszer módosítására. Kétféleképpen lehet megírni:
@PostConstruct
public void someMethod(){}
vagy
public @PostConstruct void someMethod(){}
A @PostConstruct módosított módszer akkor fut el, amikor a szerver betölti a szervet, ésA szerver csak egyszer hajtja végre。 A PostConstruct a konstruktor után, az init() metódus előtt történik. A PreDestroy() módszer a destroy() módszer után hajt végre
Ezen felül a Constructor, @Autowired és @PostConstruct sorrendje tavasszal
Valójában a függőségi injekció szó szerinti jelentéséből tudjuk, hogy ahhoz, hogy a p objektumot az A objektumba befecskendítsük, akkor először az A objektumot és a p objektumot kell generálni, mielőtt az injekció elvégezhető. Tehát ha egy p tagváltozót @Autowried A osztályban jegyzetelnek, akkor @Autowired injekció A konstrukciós módszerének végrehajtása után történik.
Ha szeretnél néhány inicializációs műveletet végrehajtani objektum generálásakor, és ezek az inicializációs műveletek függőségi injekciótól függenek, akkor ezt nem lehet megcsinálni a konstruktorban. Ehhez használhatsz egy módszert, @PostConstruct annotációkat használsz az inicializálás befejezéséhez, @PostConstruct az annotált metódusok automatikusan megszólalnak, miután a függőségi injekció befejeződött.
Konstruktor >> @Autowired >> @PostConstruct
Példa:
|