Впровадження залежностей (DI) — це шаблон проектування, який усуває залежність із коду програмування, щоб можна було легко керувати програмою та тестувати її. Ін’єкція залежностей робить наш програмний код слабко зв’язаним. Щоб краще зрозуміти DI, давайте спочатку розберемося з пошуком залежностей (DL):
Пошук залежностей
Пошук залежностей — це підхід, за якого ми отримуємо ресурс після запиту. Існують різні способи отримати ресурс, наприклад:
A obj = new AImpl();
Таким чином, ми отримуємо ресурс (примірник класу A) безпосередньо за новим ключовим словом. Інший спосіб - заводський:
A obj = A.getA();
Таким чином ми отримуємо ресурс (екземпляр класу A) за допомогою виклику статичного фабричного методу getA().
Крім того, ми можемо отримати ресурс за допомогою JNDI (інтерфейс каталогу імен Java), як:
Context ctx = new InitialContext(); Context environmentCtx = (Context) ctx.lookup('java:comp/env'); A obj = (A)environmentCtx.lookup('A');
Отримати ресурс можна різними способами. Давайте розглянемо проблему в цьому підході.
Проблеми пошуку залежностей
Існує в основному дві проблеми пошуку залежностей.
Ін'єкція залежності
Ін’єкція залежностей — це шаблон розробки, який усуває залежність програм. У такому випадку ми надаємо інформацію із зовнішнього джерела, наприклад файлу XML. Це робить наш код слабко зв’язаним і легшим для тестування. У такому випадку ми пишемо код так:
class Employee{ Address address; Employee(Address address){ this.address=address; } public void setAddress(Address address){ this.address=address; } }
У такому випадку екземпляр класу Address надається зовнішнім джерелом, наприклад файлом XML, за допомогою конструктора або методу налаштування.
Два способи впровадження залежностей у фреймворк Spring
Spring Framework надає два способи впровадження залежності
- За Конструктором
- Методом сетера
Майбутні теми Spring Dependency Injection
Впровадження залежностей конструкторомДавайте подивимося, як ми можемо ввести залежність за допомогою конструктора.
Ін’єкція залежностей за методом встановлення
Давайте подивимося, як ми можемо ввести залежність за допомогою методу установки.