Есть ли сфера применения весной?

Я видел область применения в следующем блоге. Это правда?

http://www.concretepage.com/spring/spring-bean-scope-example-using-scope-annotation-and-xml-for-singleton-prototype-request-session-global-session-and-application-scope-with-scoped-proxy

Поскольку, согласно моему серфингу, я узнал, что у весны есть только ниже 5 областей. Пожалуйста, поправьте меня, если я ошибаюсь.

  1. одиночка
  2. Прототип
  3. Запрос
  4. сессия
  5. Глобальная сессия

2 ответа

Решение

На официальном документе есть раздел, который связан с областями применения бобов:

В основном они определяют следующее:

singleton (по умолчанию) Обрабатывает одно определение компонента в одном экземпляре объекта для контейнера Spring IoC.

Прототип Обрабатывает одно определение компонента для любого количества экземпляров объекта.

request Обрабатывает одно определение компонента для жизненного цикла одного HTTP-запроса; то есть каждый HTTP-запрос имеет свой собственный экземпляр компонента, созданного на основе определения одного компонента. Действителен только в контексте веб-приложения Spring ApplicationContext.

сеанс Обрабатывает определение одного компонента для жизненного цикла сеанса HTTP. Действителен только в контексте веб-приложения Spring ApplicationContext.

globalSession Обрабатывает определение единственного компонента для жизненного цикла глобальной HTTP-сессии. Обычно действует только при использовании в контексте портлета. Действителен только в контексте веб-приложения Spring ApplicationContext.

application Области применения определяют одно определение bean-компонента для жизненного цикла ServletContext. Действителен только в контексте веб-приложения Spring ApplicationContext.

websocket Обрабатывает одно определение bean-компонента для жизненного цикла WebSocket. Действителен только в контексте веб-приложения Spring ApplicationContext.


Более того, поскольку в Spring 3.0 существует другая область потока области действия, но она не зарегистрирована по умолчанию, более того, вы даже можете создать свою собственную область:

Начиная с Spring 3.0 область потока доступна, но по умолчанию она не зарегистрирована. Для получения дополнительной информации см. Документацию для SimpleThreadScope. Инструкции по регистрации этой или любой другой настраиваемой области см. В разделе "Использование настраиваемой области".

Есть раздел, который объясняет, как определить вашу пользовательскую область:


Уважение к Application scope, они определяют это следующим образом:

Контейнер Spring создает новый экземпляр компонента AppPreferences, используя определение компонента appPreferences один раз для всего веб-приложения. Таким образом, bean-компонент appPreferences находится на уровне ServletContext и хранится как обычный атрибут ServletContext.

Это также объясняет разницу между синглтоном Spring:

Это в некоторой степени похоже на одноэлементный компонент Spring, но отличается двумя важными способами: это один компонент для ServletContext, а не для Spring 'ApplicationContext' (для которого может быть несколько в любом данном веб-приложении), и он фактически отображается и поэтому видимый как атрибут ServletContext

Итак, если вы хотите использовать XML:

<bean id="apps" class="com.App" scope="application"/>

Или аннотация:

@ApplicationScope
@Component
public class App {
    // ...
}

application Области применения определяют одно определение bean-компонента для жизненного цикла ServletContext. Действителен только в контексте веб-приложения Spring ApplicationContext.

Для получения более подробной информации перейдите по ссылке: http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/

Другие вопросы по тегам