Нещодавно я натрапив на цю анотацію в @PostConstruct проєкту компанії і був здивований.
Огляд:
Після консультацій підсумок виглядає так:
1. Починаючи зі специфікації Java EE5, використовуються дві анотації, що впливають на життєвий цикл сервлета — @PostConstruct і @PreDestroy — для модифікації методу нестатичного void(). Є два способи її написати:
@PostConstruct
public void someMethod(){}
або
public @PostConstruct void someMethod(){}
Метод @PostConstruct modified виконується, коли сервер завантажує сервлет, іСервер виконає його лише один раз。 PostConstruct виконується після конструктора та перед методом init(). Метод PreDestroy() виконується після того, як метод destroy() є інтелектуальним
Крім того, наказ конструктора, @Autowired і @PostConstruct навесні
Насправді, з буквального значення ін'єкції залежностей, ми можемо знати, що для інжекції об'єкта p у об'єкт A спочатку потрібно згенерувати об'єкти A і об'єкти p, перш ніж ін'єкція може бути виконана. Отже, якщо змінна елемента p анотується @Autowried класу A, то @Autowired ін'єкція відбувається після виконання методу побудови A.
Якщо ви хочете виконати деякі операції ініціалізації при генерації об'єкта, і ці операції залежать від ін'єкції залежностей, то ви не можете зробити це в конструкторі. Для цього можна використати метод @PostConstruct анотації для завершення ініціалізації, @PostConstruct анотовані методи автоматично викликатимуться після завершення ін'єкції залежностей.
Конструктор >> @Autowired >> @PostConstruct
Приклад:
|