Краткое введение
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/classes и все jar-пакеты в WEB-INF/lib при запуске.
|