Stručný úvod
Java EE5 zavádza dve anotácie, @PostConstruct a @PreDestroy, ktoré pôsobia na životný cyklus servletu a umožňujú vlastné operácie pred inicializáciou zrna a pred jeho zničením. Tento článok hlavne vysvetľuje @PostConstruct.
Pokyny k používaniu API
Nasledujú pokyny na používanie @PostConstruct API:
PostConstruct anotácie sa používajú pri metódach, ktoré je potrebné vykonať po dokončení injekcie závislostí, aby sa mohla vykonať akákoľvek inicializacia. Táto metóda musí byť zavolaná pred vložením triedy do služby. Všetky triedy podporujúce dependency injection musia podporovať túto anotáciu. Aj keď trieda nepožaduje žiadnu injekciu zdrojov, musí byť zavolaná metóda anotovaná pomocou PostConstruct. Existuje len jeden spôsob, ako s touto anotáciou anotovať. Metóda aplikácie PostConstruct anotácií musí spĺňať všetky nasledujúce kritériá: metóda nesmie mať žiadne parametre, pokiaľ nejde o EJB interceptor, ako je definované špecifikáciou EJB, v takom prípade bude mať objekt InvocationContext; Typ návratu metódy musí byť neplatný; Metóda nesmie vyhodiť kontrolovanú výnimku; Spôsob aplikácie PostConstruct môže byť verejný, chránený, balíkový súkromný alebo súkromný; Metóda nemôže byť statická okrem aplikačného klienta; Metóda môže byť konečná; Ak metóda vyhodí nekontrolovanú výnimku, trieda nesmie byť umiestnená do služby, pokiaľ nejde o EJB, ktorý dokáže výnimku spracovať a z nej sa zotaviť. Dá sa zhrnúť nasledovne:
- Existuje len jeden spôsob, ako anotovať touto anotáciou;
- Anotovaná metóda nesmie mať žiadne parametre;
- Anotovaná metóda vracia hodnotu void;
- Anotovaná metóda nesmie vyhodiť kontrolovanú výnimku;
- Anotovaná metóda musí byť nestatická metóda;
- Táto metóda sa vykonáva iba raz;
Diagram vykonávania Servletu
Pridaním dvoch anotácií môže servlet vykonať len tento diagram:
Počas procesu inštanciácie konkrétneho zrna sa anotovaná metóda @PostConstruct volá po konštruktívnej metóde a pred init metódou.
Príklad
Spustiteľné metódy napísané na základe Spring bootu sa dajú nájsť na githube:https://github.com/HappySecondBrother/example
Metóda UserService (poskytuje uložené dáta):
Metóda BusinessService, volanie UserService @PostConstruct:
Výsledky realizácie:
Žiadosť o projekt
V project@PostConstruct je hlavnou aplikáciou načítať niektoré cache dáta pri inicializácii servletu.
Poznámky:
Použitie tejto anotácie ovplyvňuje čas začiatku služby. Server pri štarte skenuje všetky súbory vo WEB-INF/classes a všetky jar balíky pod WEB-INF/lib.
|