Sobes.tech
Back to questions
Senior
7

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

Companies where asked
Octo

Answer from AI

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.