1. Введение
При разработке приложения Spring необходимо указать фреймворку, где искать bean-компоненты. Когда приложение запускается, платформа находит и регистрирует их все для дальнейшего выполнения. Точно так же нам нужно определить отображение, где будут обрабатываться все входящие запросы к веб-приложению.
Все веб-фреймворки Java построены на основе API сервлетов . В веб-приложении жизненно важную роль играют три файла. Обычно мы связываем их по порядку: web.xml
-> applicationContext.xml
-> spring-servlet.xml
В этой статье мы рассмотрим различия между applicationContext
и spring-servlet
.
2. applicationContext.xml
Инверсия управления (IoC) является ядром фреймворка Spring. В среде с поддержкой IoC обычно контейнер отвечает за создание, создание и удаление объектов. В Spring applicationContext
играет роль контейнера IoC.
При разработке стандартного J2EE-приложения мы объявляем ContextLoaderListener
в файле web.xml
. Кроме того, contextConfigLocation
также определен для указания файла конфигурации XML.
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>
Когда приложение запускается, Spring загружает этот файл конфигурации и использует его для создания объекта WebApplicationContext
. При отсутствии contextConfigLocation
по умолчанию система
будет искать файл /WEB-INF/applicationContext.xml
для загрузки .
Короче говоря, applicationContext
— это центральный интерфейс в Spring. Он предоставляет информацию о конфигурации для приложения.
В этом файле мы предоставляем конфигурации, связанные с приложением. Обычно это основной источник данных, файл-заполнитель свойств и источник сообщений для локализации проекта, а также другие улучшения.
Давайте посмотрим на пример файла:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<context:property-placeholder location="classpath:/database.properties" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="initialSize" value="5" />
<property name="maxActive" value="10" />
</bean>
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages" />
</bean>
</beans>
ApplicationContext
является полным надмножеством интерфейса BeanFactory
и, следовательно, предоставляет все функциональные возможности BeanFactory
. Он также обеспечивает интегрированное управление жизненным циклом, автоматическую регистрацию BeanPostProcessor
и BeanFactoryPostProcessor
, удобный доступ к MessageSource
и публикацию ApplicationEvent.
3. spring-servlet.xml
В Spring один фронтальный сервлет принимает входящие запросы и делегирует их соответствующим методам контроллера. Фронтальный сервлет, основанный на шаблоне проектирования Фронт-контроллера , обрабатывает все HTTP-запросы определенного веб-приложения. Этот передний сервлет имеет все элементы управления входящими запросами.
Точно так же spring-servlet
действует как сервлет фронт-контроллера и предоставляет единую точку входа. Он принимает входящий URI. За кулисами он использует реализацию HandlerMapping
для определения сопоставления между запросами и объектами обработчика.
Давайте посмотрим на пример кода:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<mvc:annotation-driven />
<context:component-scan base-package="com.foreach.controller" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
4. applicationContext.xml и
spring-
servlet.xml ``
Давайте посмотрим на итоговое представление:
| **Особенность** | `applicationContext.xml` | `весна-servlet.xml` |
| **Рамки** | Это часть фреймворка Spring. | Это часть фреймворка Spring MVC. |
| **Цель** | Контейнер, определяющий бины Spring. | Фронт-контроллер, обрабатывающий входящие запросы. |
| **Сфера** | Он определяет bean-компоненты, которые являются общими для всех сервлетов. | Он определяет только bean-компоненты, специфичные для сервлета. |
| **Управляет** | Он управляет глобальными вещами, такими как `источник данных,` и в нем определены фабрики соединений. | И наоборот, в нем будут определены только веб-вещи, такие как контроллеры и `viewresolver .` |
| **использованная литература** | Он не может получить доступ к компонентам `spring-servlet` . | Он может получить доступ к bean-компонентам, определенным в `applicationContext` . |
| **Обмен** | Сюда будут помещены свойства, общие для всего приложения. | Здесь будут находиться свойства, относящиеся только к одному сервлету. |
| **Сканирование** | Мы определяем фильтры для включения/исключения пакетов. | Мы объявляем сканирование компонентов для контроллеров. |
| **Вхождение** | Обычно в приложении определяют несколько файлов контекста. | Точно так же мы можем определить несколько файлов в веб-приложении. |
| **Загрузка** | Файл applicationContext.xml загружается `ContextLoaderListener` . | Файл spring-servlet.xml загружается `DispatcherServlet` . |
| **Необходимый** | По желанию | Обязательный |
5. Вывод
В этом руководстве мы узнали о файлах applicationContext
и spring-servlet .
Затем мы обсудили их роль и обязанности в приложении Spring. В конце мы рассмотрели различия между ними.