Junior
104
questionbank

Какие области видимости бинов в Spring вы знаете?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

В Spring Framework существуют следующие области видимости (scopes) бинов:

  • singleton: Один экземпляр бина создается для каждого контекста Spring. Является областью видимости по умолчанию. Ленивая инициализация может быть включена.
  • prototype: Новый экземпляр бина создается при каждом запросе к нему.
  • request: Новый экземпляр бина создается для каждого HTTP-запроса. Действителен только в контексте веб-приложения.
  • session: Новый экземпляр бина создается для каждой HTTP-сессии. Действителен только в контексте веб-приложения.
  • application: Один экземпляр бина создается для всего контекста веб-приложения (ServletContext). Действителен только в контексте веб-приложения.
  • websocket: (Начиная со Spring 4.0) Новый экземпляр бина создается для каждого жизненного цикла WebSocket-сессии.

Наиболее часто используемые области видимости:

Область видимостиОписаниеИнициализацияЖизненный цикл
singletonОдин экземпляр на Spring ApplicationContext.По умолчанию при старте контекста (можно сделать ленивой)До завершения работы ApplicationContext.
prototypeНовый экземпляр при каждом запросе к бину.При каждом запросе к бину.Определяется клиентом (кто запросил бин).
requestНовый экземпляр на каждый HTTP-запрос.При обработке первого запроса, включающего бин.До завершения обработки текущего HTTP-запроса.
sessionНовый экземпляр на каждую HTTP-сессию.При первом обращении к бину в рамках сессии.До завершения HTTP-сессии.
applicationОдин экземпляр на весь ServletContext (веб-приложение).При старте ServletContext (можно сделать ленивой).До завершения работы ServletContext.
websocketНовый экземпляр на каждый жизненный цикл WebSocket-сессии.При установлении WebSocket-сессии.До завершения WebSocket-сессии.

Пример определения бина с определенной областью видимости:

java