Встречается на собеседованиях • сегодня

В чем разница между внедрением через конструктор, через поле и через метод

Внедрение через конструктор - самый предпочтительный способ, так как делает зависимости явными и позволяет создавать immutable объекты:

java
class Service {
    private final Dependency dep;
    Service(Dependency dep) { this.dep = dep; }
}

Внедрение через поле - менее явное, усложняет тестирование (нужен рефлексия или фреймворк):

java
class Service {
    @Autowired
    private Dependency dep;
}

Внедрение через метод - гибкий вариант, позволяет изменять зависимости после создания объекта:

java
class Service {
    private Dependency dep;
    void setDep(Dependency dep) { this.dep = dep; }
}

Основные различия:

  1. Конструктор гарантирует инициализацию зависимостей
  2. Полевое внедрение нарушает инкапсуляцию
  3. Методное внедрение делает объект mutable
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы