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

Как происходит инъекция бина по приватному полю

В Spring инъекция бина в приватное поле возможна благодаря рефлексии. Spring использует Field.setAccessible(true) для обхода ограничений доступа и устанавливает значение поля напрямую.

Пример:

java
@Component
public class MyService {
    @Autowired
    private MyRepository repository; // Инъекция в приватное поле
}

Как это работает:

  1. Spring находит все поля с аннотациями (@Autowired, @Inject и т.д.).
  2. Для приватных полей вызывается field.setAccessible(true).
  3. Через field.set(instance, bean) подставляется зависимость.

Важно:

  • Не рекомендуется использовать инъекцию в приватные поля (лучше через конструктор или сеттер).
  • Может нарушать инкапсуляцию.
  • Зависит от рефлексии, что может вызвать проблемы в модульных системах (например, Java 9+).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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