По умолчанию все компоненты Spring единичны. Когда контейнер передает компонент (либо через связывание, либо как результат вызова метода контейнера getBean() ), всегда будет передан тот же самый экземпляр компонента.
При объявлении <bean> компонента можно определить область его действия.
Области действия:
singleton - В каждом контейнере Spring может быть создан только один компонент (по умолчанию)
prototype - Позволяет создавать произвольное количество компонентов (по одному на каждое обращение)
Дополнительные области для Spring-MVC приложений:
request - Область действия компонента ограничивается HTTP-запросом. Может применяться только в веб-приложениях Spring (например, использующих Spring MVC)
session - Область действия компонента ограничивается HTTP-сеансом. Может применяться только в веб-приложениях Spring (например, использующих Spring MVC)
global-session - Область действия компонента ограничивается глобальным HTTP-сеансом. Может применяться только в портлетах
Понятие единичных компонентов ограничено областью действия контекста Spring. В отличие от истинных классов-одиночек, гарантирующих существование единственного экземпляра на каждый загрузчик классов (classloader), для единичных компонентов в Spring гарантируется
только наличие единственного экземпляра компонента в контексте приложения – ничто не мешает создать экземпляр того же класса традиционным способом или даже создать несколько объявлений <bean> для одного и того же класса.
Комментариев нет:
Отправить комментарий