Spring Dependency Injection (DI)

Впрыск зависимой пружины (DI)

В Spring frameowork шаблон проектирования Dependency Injection (DI) используется для определения зависимостей между объектами. Он выходит в двух основных типах:

  • Сеттер Инъекция

  • Конструктор Инъекция

1. Сеттер Инъекция

Это самый популярный и простой метод DI, он вводит зависимость через метод установки.

пример

Вспомогательный класс с методом установки.

package com.example.output;

import com.example.output.IOutputGenerator;

public class OutputHelper
{
    IOutputGenerator outputGenerator;

    public void setOutputGenerator(IOutputGenerator outputGenerator){
        this.outputGenerator = outputGenerator;
    }

}

Файл конфигурации bean-компонента, который объявляет bean-компоненты и устанавливает зависимость посредством внедрения сеттера (тег свойства).



    
        
            
        
    




Вы просто внедряете bean-компонент CsvOutputGenerator в объект OutputHelper с помощью метода установки (setOutputGenerator).

2. Конструктор Инъекция

Этот метод DI вводит зависимость через конструктор.

пример

Вспомогательный класс с конструктором.

package com.example.output;

import com.example.output.IOutputGenerator;

public class OutputHelper
{
    IOutputGenerator outputGenerator;

        OutputHelper(IOutputGenerator outputGenerator){
        this.outputGenerator = outputGenerator;
    }
}

Файл конфигурации bean-компонента, который объявляет bean-компоненты и устанавливает зависимость через внедрение конструктора (тег constructor-arg).



    
        
            
        
    




Вы просто внедряете бин CsvOutputGenerator в объект OutputHelper через конструктор.

Сеттер или конструктор впрыска?

Spring Framework не устанавливает жестких правил, просто используйте любой тип DI, который соответствует потребностям вашего проекта. Тем не менее, из-за простоты впрыска сеттера, он всегда выбирается для большинства сценариев.