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

Какая будет проблема при внедрении бина через поле

При внедрении бина через поле (field injection) возникают следующие проблемы:

  1. Нарушение инкапсуляции - поле становится доступным для изменения через рефлексию, что может привести к неожиданному поведению.
  2. Трудности тестирования - для unit-тестов нужно использовать рефлексию или фреймворки типа Mockito для мокирования зависимостей.
  3. Зависимость от контейнера - класс нельзя создать вручную (через new), так как зависимости не будут проинициализированы.

Пример проблемного кода:

java
@Service
public class UserService {
    @Autowired
    private UserRepository userRepository; // field injection
}

Рекомендуется использовать конструкторное внедрение:

java
@Service
public class UserService {
    private final UserRepository userRepository;
    
    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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