Когда вы создаете определение бина, то создаете набор правил для создания фактических экземпляров класса, определенного данным определением бина. Мысль о том, что определение бина представляет собой набор правил, очень важна, поскольку она означает, что, как и в случае с классом, можно создать множество экземпляров объектов из одного набора правила.
Можно управлять не только различными зависимостями и конфигурационными значениями, которые должны быть подключены к объекту, создаваемому из конкретного определения бина, но и контролировать область видимости объектов, создаваемых из конкретного определения бина. Данный подход обладает большими преимуществами и является гибким, поскольку можно выбирать область видимости объектов, которые вы создаете с помощью конфигурации, вместо того, чтобы подготавливать область видимости объекта на уровне класса Java. Бины можно определить для развертывания в одной из нескольких областей видимости. Spring Framework поддерживает шесть областей видимости, четыре из которых доступны только в том случае, если вы используете ориентированный на использование в веб-среде (web-aware) ApplicationContext
. Вы также можете создать специальную область видимости.
В следующей таблице описаны поддерживаемые области видимости:
Область применения | Описание |
---|---|
объект-одиночка (singleton) |
(По умолчанию) Применяет область видимости единственного определения бина к единственному экземпляру объекта для каждого IoC-контейнера Spring. |
прототип (prototype) |
Применяет область видимости единственного определения бина для любого количества экземпляров объектов. |
запрос (request) |
Применяет область видимости определения единственного бина для жизненного цикла единственного HTTP-запроса. Таким образом, для каждого нового HTTP-запроса создается новый экземпляр бина на основе единственного определения бина. Действует только в контексте ориентированного на использование в веб-среде (web-aware) |
сессия (session) |
Применяет область видимости единственного определения бина для жизненного цикла HTTP |
приложение (application) |
Применяет область видимости единственного определения бина для жизненного цикла |
веб-сокет (websocket) |
Применяет область видимости единственного определения бина для жизненного цикла |
SimpleThreadScope
. Инструкции по регистрации этой или любой другой пользовательской области видимости см. в разделе Использование специальной области видимости.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ