Junior — Middle
Explique ce qu'est un scope bean dans le conteneur Spring et en quoi la portée de l'application diffère des autres zones du cycle de vie des beans.
sobes.tech IA
Réponse de l'IA
В 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 полезен для хранения данных или сервисов, которые должны быть общими для всего веб-приложения.