Недавно я наткнулся на эту аннотацию в @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
Пример:
|