Spring IoC контейнер: зависимости

Типичное корпоративное приложение не состоит из одного объекта (или bean-компонента в Spring). Даже в самом простом приложении есть несколько объектов, которые работают вместе, чтобы представить то, что конечный пользователь видит как связное приложение. В следующих постах объясняется, как перейти от определения отдельных определений bean-компонентов к полностью реализованному приложению, в котором объекты взаимодействуют для достижения цели.

Внедрение зависимостей

Внедрение зависимостей (DI, Dependency injection) - это процесс, при котором объекты определяют свои зависимости (то есть другие объекты, с которыми они работают) только через аргументы конструктора, аргументы метода фабрики или свойства, которые устанавливаются в экземпляре объекта после его создания или возвращения из фабричного метода. Затем контейнер внедряет эти зависимости при создании компонента. Этот процесс по своей сути является инверсией (отсюда и название, инверсия контроля) самого компонента, самостоятельно контролирующего создание или размещение его зависимостей с помощью прямого конструирования классов или шаблона Service Locator.

Код чище с принципом DI, и разделение более эффективно, когда объектам предоставляются их зависимости. Объект не ищет свои зависимости и не знает местоположение или класс зависимостей. В результате ваши классы становятся легче тестировать, особенно когда зависимости находятся на интерфейсах или абстрактных базовых классах, которые позволяют использовать реализации-заглушки (stub) или макеты (mock) в модульных (юнит) тестах.

DI существует в двух основных вариантах: внедрение зависимостей на основе конструктора и внедрение зависимостей на основе Setter.


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


Комментарии

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

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

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

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