Назад к вопросам
Junior — Middle
108
Объясните, что такое scope bean в контейнере Spring и чем отличается область application от других областей жизненного цикла бинов.
Ответ от нейросети
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 полезен для хранения данных или сервисов, которые должны быть общими для всего веб-приложения.