Впрыск зависимой пружины (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, который соответствует потребностям вашего проекта. Тем не менее, из-за простоты впрыска сеттера, он всегда выбирается для большинства сценариев.