ApplicationContext и ServletContext

Я запутался между двумя ApplicationContext и ServletContext, когда дело доходит до Spring MVC Application. Я знаю, что существует только один ApplicationContext на каждое веб-приложение Spring, а также только один ServletContext на каждое веб-приложение. Чтобы инициировать значение для ApplicationContext и ServletContext, в web.xml мы добавим что-нибудь в тег context-param .

Это то, что меня смущает. Каковы различия между этими двумя (я знаю, ApplicationContext имеет несколько методов для работы с бобами)? и Когда мы будем использовать ApplicationContext и Когда мы будем использовать ServletContext ?

19
задан 11.08.2015, 04:38

4 ответа

Весной, чтобы прочитать конкретный файл конфигурации инициализации, мы используем контекстный параметр с предопределенным именем, называемым contextConfigLocation .

<context-param>
  <description>WebFlow context configuration</description>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/test-context.xml</param-value>
</context-param> 

Но в случае простого веб-приложения J2EE без включения каких-либо каркасов контекстный параметр может считывать данные из любого места приложения, т. Е. Любой сервлет, фильтровать.

Разница между ApplicationContext и ServletContext , объяснил Санджай

0
ответ дан 21.10.2019, 14:49

ServletContext отличается от «вложения» ApplicationContext. Документ Java говорит следующее для ServletContext

Существует один контекст [сервлет] для «веб-приложения» на виртуальную машину Java. («Веб-приложение» - это набор сервлетов и контента, установленных в определенном подмножестве пространства имен URL-адреса сервера, например / catalog, и, возможно, установленном через файл .war.)

Поскольку более одного «веб-приложения» под одним и тем же AppBase, каждое из которых имеет свои собственные DocBase, WEB-INF/web.xml и т. д., определенно существует общая среда / контекст, который является общим для всех «веб-приложений», о котором идет речь как ApplicationContext. В случае JSF PortletContext является противоположностью ServletContext, а ApplicationContext называется ExternalContext.

-1
ответ дан 21.10.2019, 14:49

Контекст сервлета:

Он инициализируется при развертывании приложения сервлета. Контекст сервлета содержит все конфигурации (init-param, context-params и т. Д.) Всего приложения сервлета.

Контекст приложения:

Это особенность Spring. Инициализируется весной. Он содержит все определения bean-компонентов и жизненный цикл bean-компонентов, определенных в файлах конфигурации Spring. Servlet-Context не имеет ни малейшего представления об этом.

Существует два типа контекстов в Spring: parent и child.

Родительский контекст Spring (контекст приложения / корневой контекст)

  <listener>
        <listener-lass> 
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
  </listener>
  <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/service-context.xml,
            /WEB-INF/dao-context.xml,
            /WEB-INF/was-context.xml,
            /WEB-INF/jndi-context.xml,
            /WEB-INF/json-context.xml
        </param-value>
  </context-param>

role-target-of-contextloaderlistener-in-spring
Spring- ContextLoaderListener-And-DispatcherServlet-Concepts
Когда запускается контейнер Spring, он считывает все определения bean-компонентов из файлов конфигурации и создает объекты bean-объектов и управляет жизненным циклом объектов bean-компонентов. Эта конфигурация не является обязательной.

DispatcherServlet vs ContextLoaderListener
/ декларирование-spring-bean-in-parent-context-vs-child-context

Spring Child Контекст (WebApplicationContext / Child Context)

<servlet>
    <servlet-name>myWebApplication</servlet-name>
    <servlet-class>
         org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>myWebApplication</servlet-name>
    <url-pattern>/app/*</url-pattern>
</servlet-mapping>

При запуске весеннего веб-приложения он ищет файл конфигурации Spring Bean myWebApplication-servlet.xml. Он будет читать все определения компонентов, создавать и управлять жизненным циклом объектов объектов. Если доступен родительский весенний контекст, он объединит дочерний весенний контекст с родительским весенним контекстом. Если родительский контекст Spring недоступен, приложение будет иметь только дочерний контекст весны.

23
ответ дан 21.10.2019, 14:49

ApplicationContext - это контейнер Spring.

Он используется для соединения конфигураций из бинов Spring и использования их для приложения.

Используйте ApplicationContext, если вы хотите получить информацию о бобах Spring.

Используйте ServletContext, если вы хотите получить / установить атрибуты, общие для всех сервлетов.

0
ответ дан 21.10.2019, 14:49

Теги

Похожие вопросы