Spring – IoC Containers

author
2 minutes, 58 seconds Read

Kontener Spring IoC jest rdzeniem Spring Framework. Kontener tworzy obiekty, łączy je ze sobą, konfiguruje i zarządza ich pełnym cyklem życia od utworzenia do zniszczenia. Kontener Spring wykorzystuje wstrzykiwanie zależności (DI) do zarządzania komponentami, które tworzą aplikację.

Spring dostarcza następujące dwa typy kontenerów.

  1. Kontener BeanFactory
  2. Kontener ApplicationContext

Czytaj więcej: Inversion of Control and Dependency Injection

BeanFactory

A BeanFactory jest w zasadzie niczym więcej niż interfejsem dla zaawansowanej fabryki zdolnej do utrzymywania rejestru różnych fasolek i ich zależności.

Formuła BeanFactory umożliwia nam odczytywanie definicji fasoli i dostęp do nich za pomocą fabryki fasoli.

1.1. Jak utworzyć BeanFactory

Gdy używamy tylko BeanFactory możemy utworzyć jedną i wczytać niektóre definicje beanów w formacie XML w następujący sposób:

Inne sposoby tworzenia fabryki beanów są jak poniżej:

Podstawowo to wszystko. Używając getBean(String), możesz pobierać instancje swoich fasolek; widok po stronie klienta BeanFactory jest zaskakująco prosty.

1.2. Metody BeanFactory

Interfejs BeanFactory ma tylko sześć metod do wywołania przez kod klienta:

  1. boolean containsBean(String): zwraca true, jeśli BeanFactory zawiera definicję fasoli lub instancję fasoli, która pasuje do podanej nazwy
  2. Object getBean(String): zwraca instancję fasoli zarejestrowaną pod podaną nazwą. W zależności od tego, w jaki sposób bean został skonfigurowany przez konfigurację BeanFactory, zwrócona zostanie albo singleton, a więc współdzielona instancja, albo nowo utworzony bean. A BeansException zostanie rzucony, gdy albo nie można było znaleźć beana (w takim przypadku będzie to NoSuchBeanDefinitionException), albo podczas instancjonowania i przygotowywania beana wystąpił wyjątek
  3. Object getBean(String, Class): zwraca beana, zarejestrowanego pod podaną nazwą. Zwrócony bean zostanie rzutowany na podaną klasę. Jeśli bean nie może być rzutowany, zostaną rzucone odpowiednie wyjątki (BeanNotOfRequiredTypeException). Ponadto obowiązują wszystkie zasady metody getBean(String) (patrz wyżej)
  4. Class getType(String name): zwraca Class beana o podanej nazwie. Jeśli nie udało się znaleźć żadnego beana odpowiadającego podanej nazwie, zostanie wyrzucony NoSuchBeanDefinitionException
  5. boolean isSingleton(String): określa, czy definicja beana lub instancja beana zarejestrowana pod podaną nazwą jest singletonem. Jeśli nie można znaleźć żadnego beana odpowiadającego podanej nazwie, zostanie wyrzucony NoSuchBeanDefinitionException
  6. String getAliases(String): Return the aliases for the given bean name, if any were defined in the bean definition

ApplicationContext

Kontener ApplicationContext dodaje więcej funkcjonalności specyficznych dla przedsiębiorstw, takich jak możliwość rozwiązywania wiadomości tekstowych z pliku właściwości oraz możliwość publikowania zdarzeń aplikacji do zainteresowanych słuchaczy zdarzeń. Kontener ten jest zdefiniowany przez interfejs org.springframework.context.ApplicationContext.

Kontener ApplicationContext zawiera całą funkcjonalność kontenera BeanFactory, więc jest ogólnie zalecany ponad BeanFactory. BeanFactory może być nadal używany dla lekkich aplikacji, takich jak urządzenia mobilne lub aplikacje oparte na apletach, gdzie ilość i szybkość danych jest znacząca.

2.1. Typy ApplicationContext

Najczęściej używane ApplicationContext implementacje to:

  1. FileSystemXmlApplicationContext – Ten kontener ładuje definicje fasoli z pliku XML. W tym przypadku należy podać pełną ścieżkę do pliku konfiguracyjnego XML fasoli do konstruktora.
  2. ClassPathXmlApplicationContext – Ten kontener ładuje definicje fasoli z pliku XML. W tym przypadku nie trzeba podawać pełnej ścieżki do pliku XML, ale trzeba odpowiednio ustawić CLASSPATH, ponieważ ten kontener będzie szukał pliku XML z konfiguracją fasoli w CLASSPATH.
  3. WebXmlApplicationContext – Ten kontener ładuje plik XML z definicjami wszystkich fasolek z poziomu aplikacji internetowej.

2.2. Jak utworzyć ApplicationContext

Przykładowy kod do instancjonowania kontekstu aplikacji będzie wyglądał tak.

.

Similar Posts

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.