Короткий вступ
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 при запуску.
|