Встречается на собеседованиях • сегодня
В чем разница между внедрением зависимости через конструктор и через сеттер
Основное отличие - момент внедрения и иммутабельность:
Через конструктор:
- Зависимости задаются при создании объекта
- Объект становится immutable (если поля final)
- Гарантирует, что объект всегда в валидном состоянии
- Лучше для обязательных зависимостей
java
class Service {
private final Repository repo;
public Service(Repository repo) {
this.repo = repo;
}
}Через сеттер:
- Позволяет менять зависимости после создания
- Подходит для опциональных зависимостей
- Делает класс mutable
- Требует проверок на null
java
class Service {
private Repository repo;
public void setRepo(Repository repo) {
this.repo = repo;
}
}Конструкторное внедрение предпочтительнее в большинстве случаев, так как обеспечивает лучшую инкапсуляцию и thread-safety. Сеттеры используют, когда зависимость может меняться в runtime или является опциональной.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы