Sobes.tech
Back to questions
Junior — Middle
107

Объясните, что такое scope bean в контейнере Spring и чем отличается область application от других областей жизненного цикла бинов.

Answer from AI

sobes.tech AI

В Spring scope bean определяет область видимости и жизненный цикл экземпляра бина в контейнере. Основные scope:

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

Область application отличается тем, что бин живёт в пределах всего веб-приложения и доступен всем сессиям и запросам, то есть это скоуп на уровне ServletContext. В отличие от request или session, где бин создаётся заново для каждого запроса или сессии, application scope гарантирует один экземпляр на всё время работы приложения в контейнере сервлета.

Пример объявления бина с application scope:

@Component
@Scope(value = WebApplicationContext.SCOPE_APPLICATION, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MyAppBean {
    // ...
}

Таким образом, application scope полезен для хранения данных или сервисов, которые должны быть общими для всего веб-приложения.