Sobes.tech
Назад к вопросам
Middle
16

Какие способы внедрения зависимостей есть в Spring? Какой предпочтительный?

Компании, где спрашивали
Позитив Технолоджис

Ответ от нейросети

sobes.tech AI

В Spring внедрение зависимостей (Dependency Injection, DI) можно реализовать тремя основными способами:

  1. Через конструктор — зависимости передаются через параметры конструктора класса. Это позволяет создавать неизменяемые объекты и облегчает тестирование.

  2. Через сеттеры (setters) — зависимости устанавливаются через методы установки после создания объекта.

  3. Через поля (field injection) — зависимости внедряются напрямую в поля класса с помощью аннотаций.

Предпочтительным считается внедрение через конструктор, так как оно обеспечивает:

  • Явное объявление всех зависимостей
  • Иммутабельность объекта после создания
  • Легкость тестирования и поддержки кода

Пример внедрения через конструктор:

@Component
public class Service {
    private final Repository repository;

    @Autowired
    public Service(Repository repository) {
        this.repository = repository;
    }
}