Введение в Spring IoC Container и Beans

В этом посте рассказывается о реализации в Spring Framework принципа инверсии контроля (IoC, Inversion of Control). IoC также известен как внедрение зависимостей (DI, dependency injection). Это процесс, при котором объекты определяют свои зависимости (то есть другие объекты, с которыми они работают) только через аргументы конструктора, аргументы метода фабрики или свойства, которые устанавливаются в экземпляре объекта после того, как он создан или возвращен из метода фабрики. Затем контейнер внедряет эти зависимости при создании компонента (bean). Этот процесс по своей сути является инверсией (отсюда и название, инверсия контроля) самого компонента, управляющего созданием экземпляров или расположением его зависимостей, с помощью прямого конструирования классов или механизма, такого как паттерн Service Locator.

Пакеты org.springframework.beans и org.springframework.context являются основой для контейнера IoC Spring Framework. Интерфейс BeanFactory предоставляет расширенный механизм конфигурации, способный управлять объектами любого типа. ApplicationContext - это подчиненный интерфейс BeanFactory. Он добавляет:

  • Более простую интеграцию с функциями Spring AOP
  • Обработку ресурса сообщения (для использования в интернационализации)
  • Публикацию событий
  • Специфичные для прикладного уровня контексты, такие как WebApplicationContext для использования в веб-приложениях.

Короче говоря, BeanFactory предоставляет инфраструктуру конфигурации и базовые функциональные возможности, а ApplicationContext добавляет больше специфических для enterprise функций. ApplicationContext является полным расширенным набором BeanFactory.

В Spring объекты, образующие основу вашего приложения и управляемые контейнером Spring IoC, называются bean-компонентами. Bean - это объект, который создается, собирается и иным образом управляется контейнером Spring IoC. В противном случае bean - это просто один из множества объектов в вашем приложении. Beans и их зависимости отражаются в метаданных конфигурации, используемых контейнером.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки