Niedawno natknąłem się na tę adnotację podczas @PostConstruct projektu firmowego i byłem zdezorientowany.
Recenzja:
Po konsultacjach streszczenie przedstawia się następująco:
1. Począwszy od specyfikacji Java EE5, do modyfikacji metody niestatycznej void() używa się dwóch adnotacji wpływających na cykl życia servleta, @PostConstruct i @PreDestroy. Istnieją dwa sposoby pisania:
@PostConstruct
public void someMethod(){}
lub
public @PostConstruct void someMethod(){}
Metoda @PostConstruct zmodyfikowana uruchamia się, gdy serwer ładuje serwlet, orazZostanie wykonany tylko raz przez serwer。 PostConstruct wykonuje się po konstruktorze i przed metodą init(). Metoda PreDestroy() wykonywana jest po tym, jak metoda destroy() jest intelektualna
Dodatkowo, na wiosnę pojawiły się kolejności Konstruktor, @Autowired i @PostConstruct
W rzeczywistości, z dosłownego sensu wstrzyknięcia zależności, możemy wiedzieć, że aby wstrzyknąć obiekt p do obiektu A, najpierw trzeba wygenerować obiekt A i obiekt p, zanim wstrzyknięcie będzie mogło zostać wykonane. Jeśli zmienna członkowa p jest anotowana @Autowried klasy A, to @Autowired wstrzyknięcie następuje po wykonaniu metody konstrukcyjnej A.
Jeśli chcesz wykonać operacje inicjalizacji podczas generowania obiektu, a te operacje zależą od wstrzyknięcia zależności, to nie możesz tego zrobić w konstruktorze. Aby to zrobić, możesz użyć metody @PostConstruct adnotacjami, aby zakończyć inicjalizację, @PostConstruct metody adnotowane będą automatycznie wywoływane po zakończeniu wstrzykiwania zależności.
>> @Autowired >> @PostConstruct konstruktora
Przykład:
|