Контейнеры IoC

Ключевым элементов Spring Framework является Spring Container. Container создает объекты, связывает их вместе, настраивает и управляет ими от создания до момента уничтожения.

Для управления компонентами, из которых состоит приложение, Spring Container использует Внедрение Зависимостей (DI). Эти объекты называются Spring Beans, которые мы обсудим далее.

Spring Container получает инструкции: какие объекты инстанциировать и как их конфигурировать через метаданные.

Метаданные могут быть получены 3 способами:
– XML
– Аннотации Java
– Java код

На картинке, которая находится выше, схематично показан этот процесс.
Java POJO классы поступает в Spring Container, который на основании инструкций, полученных через метаданные, выдает приложение, готовое к использованию.

В Spring имеется 2 различных вида контейнеров:

  1. Spring BeanFactory Container;
  2. Spring ApplicationContext Container;

Spring BeanFactory Container

Это самый простой контейнер, который обеспечивает базовую поддержку DI и который основан на интерфейсе org.springframework.beans.factory.BeanFactory. Такие интерфейсы, как BeanFactoryAware и DisposableBean, все еще присутствуют в Spring для обеспечения обратной совместимости.
Наиболее часто используемая реализация интерфейса BeanFactory – XmlBeanFactory.
XmlBeanFactory получает метаданные из конфигурационного XML-файла и использует его для создания настроенного приложения или системы.

BeanFactory обычно используется тогда, когда ресурсы ограничены (мобильные устройства). Поэтому, если ресурсы не сильно ограничены, то лучше использовать ApplicationContext.

Пример

Создайте Spring-проект в IntellijIdea (Пункт №1 из“Руководство по Spring. Создание простого приложения.”)

Структура проекта:

Класс Message.java

Конфигурационный файл message-bean.xml

Класс MessageRunnerWithBeanFactory.java

Результат работы программы

Исходный код проекта по ЭТОЙ ССЫЛКЕ.

Spring ApplicationContext Container

ApplicationContext является более сложным и более продвинутым Spring Container-ом. Так же, как BeanFactory, ApplicationContext загружает бины, связывает их вместе и конфигурирует их определенным образом. Но, кроме этого, ApplicationContext обладает дополнительной функциональностью: распознание текстовых сообщений из файлов настройки и отображение событий, которые происходят в приложении различными способами. Этот контейнер определяется интерфейсом org.springframework.context.ApplicationContext.

Чаще всего используются следующие реализации AppicationContext:

FileSystemXmlApplicationContext
Загружает данные о бине из XML файла. При использовании этой реализации в конструкторе, необходимо указать полный адрес конфигурационного файла.

ClassPathXmlApplicationContext
Этот контейнер также получает данные о бине из XML-файла. Но, в отличие от FileSystemApplicationContext, в этом случае необходимо указать относительный адрес конфигурационного файла (CLASSPATH).

WebXmlApplicationContext
Эта реализация ApplicationContext получает необходимую информацию из веб-приложения.

В примере создания простого Spring приложения мы уже использовали ClassPathXmlApplicationContext. Теперь мы попробуем использовать FileSystemXmlApplicationContext.

Пример

Создайте Spring-проект в IntellijIdea (Пункт №1 из“Руководство по Spring. Создание простого приложения.”)

Структура проекта:

Класс Message.java

Конфигурационный файл message-bean.xml

Класс MessageRunnerWithFileSystemApplicationContext.java

Результат работы программы

results matching ""

    No results matching ""