Spring MVC — WebApplicationContext. Описание интерфейса

В статье Spring MVC – основные понятия, архитектура была кратко описана архитектура фреймворка и диспетчера сервлетов DispatcherServlet. Ещё одним важным интерфейсом в спринг является WebApplicationContext, который работает с диспетчером сервлетов.

1. Общее описание WebApplicationContext

В определении WebApplicationContext сказано, что это интерфейс, который предоставляет конфигурацию для веб приложения. Он является read-only (т.е. его нельзя перезаписать) во время выполнения приложения, но может быть перезагружен, если это позволяет реализация.

Чтобы было понятнее какое место занимает этот интерфейс в общей конфигурации, возьмём официальную иллюстрацию spring:

Context-hierarchy-SpringMVC_

Здесь видно, что WebApplicationContext содержит в себе Controllers, HandlerMapping, ViewResolver. Всё это интерфейсы, которые отвечают за контроллеры, поиск представлений и обработку запросов. Эти понятия более подробно будут рассмотрены в других статьях, но для общего понимания ещё раз приведу картинку из статьи, указанной в начале этого описания:

SpringMVC detail

Т.е. вся правая часть как раз входит в WebApplicationContext.

2. Реализация интерфейса WebApplicationContext

По умолчанию главной реализацией этого интерфейса является класс XmlWebApplicationContext. Этот класс получает конфигурацию из XML документа, которая разбирается с помощью XmlBeanDefinitionReader.

По умолчанию, конфигурация должна находится в /WEB-INF/applicationContext.xml для родительского (рутового) контекста или в /WEB-INF/test-servlet.xml для контекста с пространством имён test-servlet (как для экземпляра DispatcherServlet с сервлетом с именем test).

Местонахождение конфигурации может быть переопределено с помощью параметра contextConfigLocation из ContextLoader и параметра сервлета init-param из FrameworkServlet.

3. Описание в web.xml

Если файлы конфигурации были созданы по умолчанию, то многие из вас замечали вот эти строчки в дескрипторе развертывания веб приложения web.xml:

Вот как раз здесь и извлекаются настройки для Spring MVC. ContextLoaderListener — это тот экземпляр, который загружает ваш WebApplicationContext, который по умолчанию использует класс XmlWebApplicationContext. А он в свою очередь разбирает настройки для корректной работы Spring.

Описание этого интерфейса может быть сложно для понимания с первого раза, но в процессе использования Spring станет более понятно. На старте изучения Spring может быть достаточно первых картинок в начале статьи, чтобы просто понимать общую архитектуру работы Spring контейнера.

 

Может быть интересно

Spring MVC — Handler Mapping. Описание интерфейса HandlerMapping

 

Share Button
29
17801 Total Views 1 Views Today

Добавить комментарий