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

Почему разработчики Spring рекомендуют отказаться от инъекции бина по полю

Инъекция бина по полю (@Autowired на поле) считается плохой практикой по нескольким причинам:

  1. Нарушение инкапсуляции – напрямую модифицируем поля, минуя конструкторы/сеттеры.
  2. Проблемы тестирования – сложно подменять зависимости в unit-тестах без Spring-контекста.
  3. Неявность зависимостей – не видно обязательных зависимостей класса при его создании вручную.

Рекомендуется использовать конструкторную инъекцию (лучший вариант):

java
@Service
public class UserService {
    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

Или сеттерную инъекцию (если зависимости опциональны):

java
@Autowired
public void setUserRepository(UserRepository userRepository) {
    this.userRepository = userRepository;
}

Конструкторная инъекция делает зависимости явными, упрощает тестирование и поддерживает иммутабельность.

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

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

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

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