Какую роль выполняет DispatcherServlet в Spring MVC?

«Какую роль выполняет DispatcherServlet в Spring MVC?» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

DispatcherServlet — это центральный сервлет-фронт-контроллер в Spring MVC, который обрабатывает все HTTP-запросы и координирует работу других компонентов.

Основные функции:

  • Единая точка входа: Принимает все запросы, сопоставляет их с контроллерами на основе @RequestMapping.
  • Управление жизненным циклом: Создает и управляет WebApplicationContext (дочерним для корневого контекста).
  • Делегирование: Координирует работу компонентов (HandlerMapping, HandlerAdapter, ViewResolver) для обработки запроса и формирования ответа.
  • Обработка исключений: Централизованная обработка через @ControllerAdvice или HandlerExceptionResolver.

Почему он важен? Он инкапсулирует общую логику маршрутизации, что позволяет разработчикам фокусироваться на бизнес-логике в контроллерах.

Пример конфигурации в web.xml (для Servlet 3.0+ предпочтительнее Java-конфигурация):

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-mvc-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>