Встречается на собеседованиях • сегодня
Какая будет проблема при внедрении бина через поле
При внедрении бина через поле (field injection) возникают следующие проблемы:
- Нарушение инкапсуляции - поле становится доступным для изменения через рефлексию, что может привести к неожиданному поведению.
- Трудности тестирования - для unit-тестов нужно использовать рефлексию или фреймворки типа Mockito для мокирования зависимостей.
- Зависимость от контейнера - класс нельзя создать вручную (через
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;
}
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы