Объясните отличия метода init() при использовании бинов типа Singleton и Prototype в контексте их жизненного цикла и инициализации.

В Spring Framework метод init() (например, помеченный аннотацией @PostConstruct или заданный в init-method) вызывается после создания и настройки бина.

Короткий ответ

Что ответить на собеседовании

В Spring Framework метод init() (например, помеченный аннотацией @PostConstruct или заданный в init-method) вызывается после создания и настройки бина.

Подробный разбор

Ответ с пояснениями

В Spring Framework метод init() (например, помеченный аннотацией @PostConstruct или заданный в init-method) вызывается после создания и настройки бина.

Для Singleton:

  • Бин создаётся один раз при старте контейнера или при первом обращении.
  • Метод init() вызывается один раз за весь жизненный цикл приложения.
  • Инициализация происходит единожды, что экономит ресурсы.

Для Prototype:

  • Каждый запрос к контейнеру создаёт новый экземпляр бина.
  • Метод init() вызывается при создании каждого нового экземпляра.
  • Инициализация происходит многократно, для каждого объекта отдельно.

Таким образом, отличие в том, что init() для Singleton вызывается один раз, а для Prototype — при каждом создании нового экземпляра, что влияет на производительность и управление ресурсами.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее