Кратко въведение
Java EE5 въвежда две анотации – @PostConstruct и @PreDestroy, които действат върху жизнения цикъл на сервлета, позволявайки персонализирани операции преди инициализацията на зърната и преди да бъде унищожена. Тази статия основно обяснява @PostConstruct.
Инструкции за използване на API
Следват инструкциите за използване на @PostConstruct API:
PostConstruct анотациите се използват при методи, които трябва да бъдат изпълнени след приключване на инжектирането на зависимости, за да се извърши каквато и да е инициализация. Този метод трябва да бъде извикан преди въвеждането на класа в услугата. Всички класове, които поддържат инжектиране на зависимост, трябва да поддържат тази анотация. Дори ако класът не изисква никакво инжекция на ресурси, трябва да бъде извикан методът, анотиран с PostConstruct. Има само един начин да се анотира с тази анотация. Методът за прилагане на PostConstruct анотации трябва да отговаря на всички следни критерии: методът не трябва да има никакви параметри, освен ако в случая на EJB интерцептор, както е дефинирано от спецификацията на EJB, в който случай ще идва с обект InvocationContext; Типът на връщане на метода трябва да е валиден; Методът не трябва да хвърля отбелязано изключение; Методът на прилагане на PostConstruct може да бъде публичен, защитен, пакетен частен или частен; Методът не може да бъде статичен, освен при клиента на приложението; Методът може да бъде окончателен; Ако методът хвърля непроверено изключение, тогава класът не трябва да бъде поставен в услугата, освен ако не е EJB, който може да обработва изключението и да се възстанови от него. То може да се обобщи по следния начин:
- Има само един начин да се анотира с тази анотация;
- Анотираният метод не трябва да има никакви параметри;
- Анотираният метод връща стойност на void;
- Анотираният метод не трябва да хвърля отбелязано изключение;
- Анотираният метод трябва да бъде нестатичен;
- Този метод се изпълнява само веднъж;
Схема за изпълнение на сервлети
Добавянето на две анотации позволява само на сервлета да изпълни блок-схемата:
По време на процеса на инстанциация на конкретно зърно, анотираният метод @PostConstruct се нарича след конструктния метод и преди метода на init.
Пример
Изпълними методи, написани на база Spring boot, могат да се намерят в github:https://github.com/HappySecondBrother/example
Метод на UserService (предоставя кеширани данни):
Методът на BusinessService, обаждане на UserService по @PostConstruct:
Резултати от изпълнението:
Приложение на проекта
В project@PostConstruct основният сценарий на приложението е да се заредят кеш данни при инициализация на сервлета.
Бележки:
Използването на тази анотация влияе на началния час на услугата. Сървърът сканира всички файлове в WEB-INF/класове и всички jar пакети под WEB-INF/lib при стартиране.
|