Сегодня я изучал масштаб масштабов. По умолчанию - режим Singleton, то есть Scope = "Singleton". Кроме того, Scope также имеет прототип, запрос, сеанс и глобальный сеанс. Scope = "Prototype" Многочисленные примеры. При настройке сферы масштаба фасоли его форма заголовка заключается в следующем:
Как использовать масштаб весны:
<bean id = "role" scope = "singleton"/>
Прицел здесь используется для настройки объема Springbabe, который идентифицирует область боба.
Перед весной 2.0 у бобов было только две области: Singleton (Singleton), Non-Singleton (также известный как прототип). После весны 2.0 были добавлены три бобы, специально разработанные для контекстов веб -приложений. Поэтому Spring 2.0 теперь имеет пять типов бобов по умолчанию. Конечно, Spring 2.0 рефактировала дизайн типов бобов и разработал гибкую поддержку типа бобов. Теоретически, может быть бесчисленное количество видов бобов. Пользователи могут добавлять новые типы бобов в соответствии с их потребностями для удовлетворения фактических потребностей приложений.
1. Синглтон Сфера
Когда сфера применения бобов будет установлена в Синглтон, в контейнере Springioc будет только один общий экземпляр бобов, и все запросы на бобы, если идентификатор соответствует определению бобов, будет возвращено только один и тот же экземпляр бобов. Другими словами, при настройке определения бобов в Singleton Scope контейнер Springioc создает только уникальный экземпляр этого определения бобов. Этот единственный экземпляр будет храниться в Синглтонском кэше, и все последующие запросы и ссылки на боб возвращают экземпляр кэшированного объекта. Здесь следует отметить, что Singleton Scope и Singleton в дизайне GOF совершенно разные. Образец дизайна Singleton означает, что в классном загрузке существует только один класс, а синглтон здесь означает, что контейнер соответствует бобам. То есть, когда боб идентифицируется как синглтон, в весеннем контейнере IOC будет существовать только один боб.
Экземпляр конфигурации:
<bean id = "Роль" Scope = "singleton"/> или <bean id = "Rely" singleton = "true"/>
2. Прототип
Каждый запрос (вводя его в другой боб или вызов метода getBean () контейнера в форме программы) будет создавать новый экземпляр Bean, который эквивалентен новой операции. Для бобов с применением прототипа очень важен, то есть весна не может быть ответственностью за весь жизненный цикл прототипа. После того, как контейнер инициализируется, настраивает, украшает или собирает экземпляр прототипа, он передает его клиенту, а затем игнорирует экземпляр прототипа. Независимо от прицела, контейнер будет вызывать инициализированный метод обратного вызова жизненного цикла всех объектов, а для прототипа любой настроенный метод обратного вызовов для жизненного цикла разрушенного целого цикла не будет вызван. Клиентский код несет ответственность за устранение объекта прототипа, и освободить любые дорогие ресурсы, принадлежащие прототипе. (Один возможный способ получить ресурсы для свободных контейнеров в пружине, занятые бобами с синглтоном,-это использование постпроцессора бобов, который содержит ссылку на очистку бобов.)
Экземпляр конфигурации:
<bean id = "Роль" Scope = "Prototype"/> или <beanid = "ROLE" Singleton = "false"/>
3. Запрос
Запрос указывает на то, что для каждого HTTP -запроса будет создан новый фасоль. В то же время бобы действительны только в текущем httprequest. Экземпляр конфигурации:
При использовании запроса, сеанса и Globalsession вы должны сначала сделать следующую конфигурацию в инициализированной web.xml:
Если вы используете веб -контейнер с сервисом 2.4 или выше, вам нужно только добавить следующий контекст -списка в файл декларации XML web.xml веб -приложения:
<Web-App> ... <Learser> <lloader-class> org.springframework.web.context.request.requestcontextlister </stirliger-class> </sluster> ... </web-app>
Если это веб -контейнер перед сервлетом 2.4, вам необходимо использовать реализацию javax.servlet.filter:
<Web-App> .. <Filter> <Filter-name> requestContextFilter </filter-name> <filter-class> org.springframework.web.filter.requestcontextfilter </filter-class> </filter> <filter-prapping> <filter-mame> requestContextFilter </filter> <Urll> </url-p-p-p-p-p-p-p-p-p-p-p </filter-mapping> ... </web-app>
Тогда вы можете настроить область охвата боба:
<bean id = "role" scope = "request"/>
4. сессия
Область сеанса указывает на то, что для каждого HTTP -запроса будет создан новый фасоль. В то же время бобы действительны только в текущей Httpsession. Экземпляр конфигурации:
Экземпляр конфигурации:
Так же, как и необходимое условие для настройки экземпляра запроса, после настройки файла веб -запуска, вы можете настроить его следующим образом:
<bean id = "role" scope = "session"/>
5. Globalsession
Объем Globalsession аналогична стандартной области HTTPSession, но это имеет смысл только в веб-приложениях на основе портлета. Спецификация портлета определяет концепцию глобального сеанса, которая разделяется всеми различными портлетами, которые составляют портлет -веб -приложение. Бобы, определенные в области глобальной сети, ограничены жизненным циклом глобального портлета. Если вы используете область Globalsession Scope для идентификации бобов в Интернете, сеть автоматически будет использоваться в качестве типа сеанса.
Экземпляр конфигурации:
Так же, как и необходимое условие для настройки экземпляра запроса, после настройки файла веб -запуска, вы можете настроить его следующим образом:
<bean id = "kree" scope = "Global Session"/>
Суммировать
Вышеуказанное все о кратком обсуждении этой статьи о сфере масштабов весной, и я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!