Sobes.tech
Back to questions
Junior — Middle
94

Какими методами можно реализовать инжектирование зависимостей в Spring?

Answer from AI

sobes.tech AI

В Spring инжектирование зависимостей можно реализовать следующими способами:

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

    @Autowired
    public Service(Repository repository) {
        this.repository = repository;
    }
}
  1. Через сеттеры (setter injection) — зависимости устанавливаются через методы-сеттеры, помеченные аннотацией @Autowired.
@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;
}

Поле инжектирование проще, но менее гибкое и сложнее для тестирования.

Также можно использовать XML-конфигурацию, но в современных проектах предпочтительнее аннотации и Java-конфигурация.