Наскоро попаднах на тази анотация в @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
Пример:
|