Spring IoC контейнер: области применения бинов

Когда вы создаете определение компонента, вы создаете рецепт для создания фактических экземпляров класса, определенного этим определением компонента. Идея о том, что определение компонента - это рецепт, важна, потому что это означает, что, как и в случае с классом, вы можете создать множество экземпляров объекта из одного рецепта.

Вы можете управлять не только различными зависимостями и значениями конфигурации, которые нужно подключить к объекту, созданному из определенного определения компонента, но также управлять областью объектов, созданных из определенного определения компонента. Этот подход является мощным и гибким, потому что вы можете выбрать область действия объектов, которые вы создаете с помощью конфигурации, вместо того, чтобы делать это в области объекта на уровне класса Java. Бины могут быть определены для развертывания в одной из нескольких областей. Spring Framework поддерживает шесть областей, четыре из которых доступны только при использовании веб ApplicationContext. Вы также можете создать пользовательскую область.

В следующей таблице описаны поддерживаемые области:

Области применения бинов

Область применения
Описание
singleton (По умолчанию) Области применения одного определения компонента к одному экземпляру объекта для каждого контейнера IoC Spring.
prototype Области применения одного определения бина для любого количества экземпляров объекта.
request Обрабатывает определение единственного компонента для жизненного цикла одного HTTP-запроса. То есть каждый HTTP-запрос имеет свой собственный экземпляр компонента, созданного на основе определения одного компонента. Действителен только в контексте веб-приложения Spring ApplicationContext.
session Обрабатывает определение единственного компонента для жизненного цикла сеанса HTTP. Действителен только в контексте веб-приложения Spring ApplicationContext.
application Области применения одного определения бина к жизненному циклу ServletContext. Действителен только в контексте веб-приложения Spring ApplicationContext.
websocket Области применения одного определения бина к жизненному циклу WebSocket. Действителен только в контексте веб-приложения Spring ApplicationContext.

Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки