Krátký úvod
Java EE5 zavádí dvě anotace, @PostConstruct a @PreDestroy, které působí na životní cyklus servletu a umožňují vlastní operace před inicializací zrna a před jeho zničením. Tento článek hlavně vysvětluje @PostConstruct.
Pokyny k použití API
Následují instrukce pro použití @PostConstruct API:
PostConstruct anotace se používají u metod, které je třeba spustit po dokončení injekce závislostí, aby bylo možné provést jakoukoli inicializaci. Tato metoda musí být vyvolána před zařazením třídy do služby. Všechny třídy podporující závislostní injekci musí tuto anotaci podporovat. I když třída nepožaduje žádnou injekci zdrojů, musí být volána metoda anotovaná pomocí PostConstruct. Existuje pouze jeden způsob, jak tuto anotaci anotovat. Metoda aplikace PostConstruct anotací musí splňovat všechna následující kritéria: metoda nesmí mít žádné parametry, pokud v případě EJB interceptoru, jak je definováno specifikací EJB, v takovém případě bude mít objekt InvocationContext; Typ návratu metody musí být neplatný; Metoda nesmí vyvolat zaškrtnutou výjimku; Metoda aplikace PostConstruct může být veřejná, chráněná, balíček soukromá nebo soukromá; Metoda nemůže být statická kromě aplikačního klienta; Metoda může být konečná; Pokud metoda vyhodí nekontrolovanou výjimku, třída nesmí být zařazena do služby, pokud nejde o EJB, který výjimku zvládne a obnoví ji. Lze ji shrnout následovně:
- Existuje pouze jeden způsob, jak tuto anotaci anotovat;
- Anotovaná metoda nesmí mít žádné parametry;
- Anotovaná metoda vrací hodnotu void;
- Anotovaná metoda nesmí vyvolat zaškrtnutou výjimku;
- Anotovaná metoda musí být nestatická metoda;
- Tato metoda se provádí pouze jednou;
Diagram průběhu provádění servletu
Přidání dvou anotací umožní servletu pouze spustit diagram:
Během procesu instancování konkrétní fazole se anotovaná metoda @PostConstruct volá za metodou konstruktu a před metodou init.
Příklad
Spustitelné metody napsané na základě Spring bootu lze najít na githubu:https://github.com/HappySecondBrother/example
Metoda UserService (poskytuje uložená data):
Metoda BusinessService, volání UserService @PostConstruct:
Výsledky provedení:
Žádost o projekt
V project@PostConstruct hlavním scénářem aplikace je načíst některá cache data při inicializaci servletu.
Poznámky:
Použití této anotace ovlivňuje čas spuštění služby. Server při spuštění prohledává všechny soubory ve WEB-INF/classes a všechny jar balíčky pod WEB-INF/lib.
|