2012-10-31 19 views
29

Jeśli masz klasę nadrzędną, która używa adnotacji @PostConstruct i tworzysz klasę potomną, która z niej pochodzi. Czy metoda @PostConstruct będzie wywoływana automatycznie za każdym razem, gdy zostanie utworzona instancja klasy potomnej? ponieważ metoda @PostConstruct jest wywoływana za każdym razem, gdy tworzona jest instancja rodzica.Wyprowadzanie z klasy z adnotacją @PostConstruct

Wiem, że w klasie dzieci nazywa się super(); dla nas automatycznie, bez konieczności wzywania go.

im tylko nie jestem pewien, czy adnotacja @PostConstruct jest automatycznie wywoływana, jeśli klasa podrzędna wywołuje konstruktora super();.

+2

Put 'println()' połączenia obu metod, odpalić aplikację i zobaczyć, co zostanie wydrukowany. – millimoose

+1

Tak, jak zasugerował @millimoose, możesz przetestować go samodzielnie i odpowiedzieć na swoje pytanie. Myślę, że będzie to dobre dla innych w przyszłości. –

+1

To może zależeć od tego, co robi wstrzyknięcie. Myślę, że '@ PostConstruct' jest rozpoznawany zarówno przez [tag: cdi] i [tag: ejb3], i być może także przez inne frameworki, i te mogą mieć inne zachowanie. Jakie ramy używasz tutaj? –

Odpowiedz

29

Po przetestowaniu tego scenariusza automatycznie zostanie wywołana metoda @PostConstruct w klasie bazowej.

Przepływ idzie tak:

  1. Gdy klasa dziecko jest tworzony, jesteś w konstruktorze klasy dziecka, wtedy są automatycznie zmuszone do klasy nadrzędnej.
  2. Po zakończeniu konstruowania klasy nadrzędnej zostaniesz odesłany do konstruktora klasy potomnej.
  3. Gdy konstruktor klasy dziecko odbywa ty są automatycznie wysyłane do klas DOMINUJĄCE @PostConstruct metoda
+10

W moim teście, jeśli nadpisujesz "@ PostConstruct" super, to dziecko jest nazywane jako pierwsze. Jeśli nie przeważasz, rodzic jest nazywany pierwszym. – Basil

Powiązane problemy