Ответ 1
Интерфейс
org.springframework.context.ApplicationContext
представляет контейнер Spring IoC и отвечает за создание, настройка и сборка вышеупомянутого beans. Контейнер получает свои инструкции о том, какие объекты нужно создавать, настраивать и собирать, считывая метаданные конфигурации. метаданные конфигурации представлены в XML, аннотациях Java или Java-код.
Снова из официального Дока:
В среде Web MVC каждый DispatcherServlet имеет свой собственный WebApplicationContext, который наследует все beans, уже определенные в корневой WebApplicationContext. Эти унаследованные beans могут быть переопределяется в области, зависящей от сервлета, и вы можете определить новые специфичный для области beans локальный для данного экземпляра сервлета.
Теперь приступим к вашему Вопросу, как указано здесь:
В Spring веб-приложениях есть два типа контейнера, каждый из которых который настроен и инициализирован по-разному. Один из них "Контекст приложения", а другой - "Контекст веб-приложений". Позволяет сначала поговорить о "Контексте приложений". Контекст приложения это контейнер, инициализированный ContextLoaderListener или ContextLoaderServlet, определенный в файле web.xml и конфигурации будет выглядеть примерно так:
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:*-context.xml</param-value> </context-param>
В приведенной выше конфигурации я прошу Spring загрузить все файлы из classpath, которые соответствуют * -context.xml и создают приложение Контекст из него. Этот контекст может, например, содержать компоненты таких как транзакционные службы промежуточного уровня, объекты доступа к данным или другие объекты, которые вы, возможно, захотите использовать (и повторно использовать) через выражение. Для каждого приложения будет один контекст приложения.
Другим контекстом является "WebApplicationContext", который является дочерним контекст контекста приложения. Каждый DispatcherServlet, определенный в веб-приложение Spring будет иметь ассоциированное WebApplicationContext. Инициализация WebApplicationContext происходит следующим образом:
<servlet> <servlet-name>platform-services</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:platform-services-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
Вы указываете имя конфигурационного файла Spring в качестве сервлета параметр инициализации. Важно помнить, что имя XML должно иметь вид -servlet. XML. В этом примере имя сервлета - это платформы-службы поэтому имя нашего XML должно быть platform-service-servlet.xml. Какие бы beans не были доступны в ApplicationContext из каждого WebApplicationContext. Рекомендуется использовать четкое разделение между службами среднего уровня, такими как бизнес-логика компонентов и классов доступа к данным (которые обычно определяются в ApplicationContext) и веб-компонентов, таких как контроллеры и просматривать разрешители (которые определены в WebApplicationContext per Диспетчерский сервлет).
Проверьте эти ссылки
Разница между applicationContext.xml и spring -servlet.xml в Spring Framework