English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Зависимости инъекции Spring

Зависимая инъекция (DI) - это шаблон проектирования, который позволяет удалить зависимости из программного кода, чтобы можно было легко управлять и тестировать приложение. Зависимая инъекция делает наш код более разреженно耦ченным. Чтобы лучше понять DI, давайте сначала рассмотрим поиск зависимостей (DL):

Поиск зависимостей

Поиск зависимостей - это метод получения ресурсов после их запроса. Например, существует несколько методов получения ресурсов:

A obj = new AImpl();

Таким образом, мы можем получить ресурсы (например, экземпляр класса A) напрямую с помощью ключевого слова new. Другой метод - метод фабрики:

A obj = A.getA();

Таким образом, мы получаем ресурсы, вызывая статический метод фабрики getA().

Или, мы можем получить ресурсы через JNDI (Java Naming and Directory Interface). :

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) через конструктор или метод setter.

Два метода выполнения инъекции зависимостей в фреймворке Spring

Фреймворк Spring предоставляет два метода инъекции зависимостей

Через конструктор Через setter метод