Sobes.tech
Назад к вопросам
Senior
3

Расскажи про способы инъекции зависимостей в Spring

Компании, где спрашивали
Octo

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

sobes.tech AI

В Spring существует несколько способов внедрения зависимостей (Dependency Injection):

  1. Через конструктор — зависимости передаются через параметры конструктора класса. Это самый рекомендуемый способ, так как позволяет делать поля final и облегчает тестирование.
@Component
public class Service {
    private final Repository repository;

    public Service(Repository repository) {
        this.repository = repository;
    }
}
  1. Через сеттеры (Setter Injection) — зависимости устанавливаются через методы-сеттеры. Используется, когда зависимость необязательна или может меняться.
@Component
public class Service {
    private Repository repository;

    @Autowired
    public void setRepository(Repository repository) {
        this.repository = repository;
    }
}
  1. Через поля (Field Injection) — зависимости внедряются напрямую в поля с помощью аннотации @Autowired. Менее предпочтительный способ, так как затрудняет тестирование и нарушает инкапсуляцию.
@Component
public class Service {
    @Autowired
    private Repository repository;
}

Каждый способ имеет свои плюсы и минусы, но конструкторный инъекшн считается лучшей практикой в современных приложениях на Spring.