Przeanalizujmy teraz możliwe akcje kontenera (patrz poniższa tabela), które mogą mieć miejsce w cyklu życia komponentu za-rządzanego przez kontener.
Akcja
Opis
Inicjalizacja
Egzemplarz nowego komponentu jest tworzony za pośrednictwem
rozpoczynająca się
konstruktora lub metody fabrykującej (oba rozwiązania są
w momencie utworzenia
równoważne). Proces tworzenia egzemplarza komponentu jest
egzemplarza komponentu
inicjowany przez wywołanie metody getBean() fabryki komponentów
lub przez żądanie ze strony innego komponentu, którego egzemplarz
już istnieje i który zawiera zależność od bieżącego komponentu.
Wstrzyknięcie zależności
Zależności są wstrzykiwane do nowo utworzonego egzemplarza
komponentu (w ramach omówionej już procedury).
Wywołanie metody
Jeśli komponent implementuje opcjonalny interfejs BeanNameAware,
setBeanName()
wówczas metoda setBeanName() należąca właśnie do tego interfejsu
jest wywoływana w celu nadania komponentowi jego głównego
identyfikatora (zadeklarowanemu w definicji komponentu).
Wywołanie metody
Jeśli komponent implementuje opcjonalny interfejs BeanFactoryAware, setBeanFactory()
referencję do fabryki, w ramach której ten komponent został
wdrożony, można wprowadzić do komponentu, wywołując metodę
setBeanFactory() tego interfejsu. Warto pamiętać, że ponieważ także konteksty aplikacji są fabrykami komponentów, wspomniana metoda
będzie wywoływana również w przypadku komponentów
wdrożonych w ramach kontekstu aplikacji (jednak wówczas
komponent otrzyma odwołanie do fabryki wykorzystywanej
wewnętrznie przez dany kontekst).
Wywołanie metody
Jeśli dany komponent implementuje opcjonalny interfejs
setResourceLoader()
ResourceLoaderAware i jest wdrażany w ramach kontekstu aplikacji,
przedmiotem wywołania jest metoda setResourceLoader() tego
interfejsu, z parametrem będącym kontekstem aplikacjim który
implementuje interfejs ResourceLoader (to rozwiązanie omówimy
już w następnym rozdziale).
D:\! AAA DZISIAJ\Spring Framework. Profesjonalne tworzenie oprogramowania w Javie\9 druk\r02.doc 113
114
Spring Framework. Profesjonalne tworzenie oprogramowania w Javie
Akcja
Opis
Wywołanie metody
Jeśli komponent implementuje opcjonalny interfejs
setApplicationEvent-
ApplicationEventPublisherAware i jest wdrażany w ramach
Publisher()
kontekstu aplikacji, przedmiotem wywołania jest metoda
setApplicationEventPublisher() tego interfejsu, a parametrem
jest kontekst aplikacji, który implementuje interfejs
ApplicationEventPublisher (także to rozwiązanie omówimy
w następnym rozdziale).
Wywołanie metody
Jeśli komponent implementuje opcjonalny interfejs
setMessageSource()
MessageSourceAware i jest wdrażany w ramach kontekstu aplikacji,
przedmiotem wywołania jest należąca do tego interfejsu metoda
setResourceLoader(), a przekazywany jest kontekst aplikacji, który
implementuje interfejs MessageSource (także to rozwiązanie
omówimy w następnym rozdziale).
Wywołanie metody
Jeśli dany komponent implementuje opcjonalny interfejs
setApplicationContext()
ApplicationContextAware i jest wdrażany w ramach kontekstu
aplikacji, zapewnienie komponentowi referencji do tego kontekstu
wymaga wywołania metody setApplicationContext(), która jest
częścią interfejsu ApplicationContextAware.
Przekazanie
Postprocesory komponentu (które omówimy w dalszej części
postprocesorom
tego rozdziału) są specjalnymi rozwiązaniami pomocniczymi
komponentu wywołania
rejestrowanymi przez aplikację wraz z fabrykami komponentów.
zwrotnego „przed
Postprocesory otrzymują wraz z wywołaniami zwrotnymi
inicjalizacją”
(poprzedzającymi właściwą inicjalizację) komponent, który mogą
dowolnie przetwarzać.
Wywołanie metody
Jeśli komponent implementuje interfejs InitializingBean,
afterPropertiesSet()
następuje wywołanie definiowanej przez ten interfejs metody
afterPropertiesSet(), która umożliwia komponentowi samodzielną
inicjalizację.
Wywołanie
Jeśli definicja danego komponentu zawiera deklarację metody
zadeklarowanej metody
inicjalizującej (w formie odpowiedniej wartości atrybutu
inicjalizującej
init-method), właśnie ta metoda zostanie wywołana,
aby umożliwić komponentowi samodzielną inicjalizację.
Przekazanie postprocesorom
Każdy postprocesor komponentu otrzymuje wywołanie zwrotne
komponentu wywołania
„po inicjalizacji” z dołączonym (w formie argumentu)
zwrotnego „po inicjalizacji”
egzemplarzem komponentu, który — w razie potrzeby
z argumentem zawierającym — może dowolnie przetwarzać.
egzemplarz komponentu
Użycie komponentu
Na tym etapie egzemplarz komponentu jest przedmiotem właściwych
operacji. Oznacza to, że komponent jest zwracany do kodu obiektu
wywołującego metodę getBean() i wykorzystywany do ustawienia
właściwości pozostałych komponentów (które wywołały bieżący
komponent jako swoje zależności) itd. Ważna uwaga: Tylko cykl
życia komponentów singletonowych jest od tego momentu śledzony
przez kontener, natomiast właścicielami komponentów prototypowych