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

Где можно применить внедрение зависимостей через конструктор

Внедрение зависимостей через конструктор (Constructor Injection) идеально подходит для случаев, когда зависимости обязательны для работы класса. Основные сценарии:

  1. Сервисные классы - когда класс зависит от других сервисов (например, репозиториев или внешних API)
java
public class UserService {
    private final UserRepository userRepo;
    
    public UserService(UserRepository userRepo) {
        this.userRepo = userRepo;
    }
}
  1. Тестирование - легко подменять зависимости моками в unit-тестах
java
@Test
void testUserService() {
    UserRepository mockRepo = mock(UserRepository.class);
    UserService service = new UserService(mockRepo);
    // тестируем...
}
  1. Неизменяемые зависимости - когда зависимости не должны меняться после инициализации (final поля)

  2. Фреймворки - Spring, Guice и другие DI-контейнеры активно используют этот подход

Главные преимущества: явность зависимостей, иммутабельность, простота тестирования. Не подходит для опциональных зависимостей - там лучше использовать setter injection.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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