Junior
66
questionbank

Какие области видимости (Scope) в Spring ты знаешь?

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

Spring Framework определяет несколько областей видимости для бинов:

  1. Singleton: Один экземпляр бина создается на контейнер Spring. Это область видимости по умолчанию.
  2. Prototype: Новый экземпляр бина создается всякий раз, когда он запрашивается.
  3. Request: Для веб-приложений. Один экземпляр бина создается на HTTP-запрос.
  4. Session: Для веб-приложений. Один экземпляр бина создается на HTTP-сессию.
  5. Application: Для веб-приложений. Один экземпляр бина создается на весь контекст ServletContext.
  6. WebSocket: Для WebSocket-приложений. Один экземпляр бина создается на WebSocket-сессию.
  7. CustomScopes: Возможность определить собственные области видимости.

Вот пример объявления бина с различной областью видимости:

java

Разница между Singleton и Prototype:

СвойствоSingletonPrototype
Количество экземпляровОдин на контейнерНовый при каждом запросе
Управление жизненным цикломКонтейнером SpringКонтейнером Spring до создания, далее - пользователь
СостояниеОбщее состояние для всех обращенийОтдельное состояние для каждого экземпляра

Области видимости Request, Session, Application и WebSocket применимы только в контексте веб-приложений и управляются соответствующими обработчиками запросов или сессий.