Вопрос проверяет понимание жизненного цикла бинов и того, как Spring управляет их экземплярами.
Scope бина определяет, сколько экземпляров бина будет создано и как долго они будут существовать. По умолчанию используется singleton, при котором на весь контейнер создаётся один экземпляр. Также существуют prototype и web-scopes. Выбор scope влияет на потокобезопасность и поведение приложения. Неправильный выбор scope может привести к ошибкам.
Scope бина — это правило, которое определяет:
количество экземпляров бина
время их жизни
область видимости
Перед использованием важно понимать их назначение.
singleton
один экземпляр на контейнер
используется по умолчанию
подходит для stateless-сервисов
prototype
новый экземпляр при каждом запросе
Spring не управляет полным жизненным циклом
подходит для stateful-объектов
@Scope("prototype")
@Component
class Task {
}
Web-scopes
Используются в веб-приложениях:
request
session
application
Внедрение prototype бина в singleton:
не создаёт новый экземпляр каждый раз
требует дополнительных механизмов (ObjectProvider)
Scope определяет жизненный цикл бина и напрямую влияет на архитектуру приложения. Выбор scope должен быть осознанным.