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

Почему не следует внедрять зависимости через поля

Внедрение зависимостей через поля (field injection) считается плохой практикой по нескольким причинам:

  1. Тестирование сложнее - нельзя передать mock-объект в приватное поле без рефлексии
  2. Неявная зависимость - класс скрывает свои зависимости, что усложняет понимание кода
  3. Нарушение инкапсуляции - зависимости становятся частью состояния объекта, хотя должны быть внешними
  4. Проблемы с final - поля не могут быть final, что снижает безопасность потоков

Лучше использовать конструкторный или сеттерный injection:

java
// Хороший вариант - конструкторный injection
@Service
public class UserService {
    private final UserRepository repository;
    
    @Autowired
    public UserService(UserRepository repository) {
        this.repository = repository;
    }
}

Конструкторный injection делает зависимости явными, позволяет делать поля final и упрощает тестирование.

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

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

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

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