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

В следующей таблице перечислены специализированные бины, обнаруженные DispatcherServlet:

Тип бина Пояснение

HandlerMapping

Отображает запрос на обработчик вместе со списком interceptors для предварительной и постобработки. Отображение основывается на некоторых критериях, детали которых зависят от реализации HandlerMapping.

Две основные реализации HandlerMapping - RequestMappingHandlerMapping (которая поддерживает методы, аннотированные @RequestMapping) и SimpleUrlHandlerMapping (которая постоянно осуществляет явную регистрацию шаблонов путей URI для обработчиков).

HandlerAdapter

Помогает DispatcherServlet вызвать обработчик, отображенный на запрос, независимо от того, как обработчик будет вызван на самом деле. Например, вызов аннотированного контроллера требует разрешения аннотаций. Основная цель HandlerAdapter – оградить DispatcherServlet от таких деталей.

HandlerExceptionResolver

Стратегия для распознавания исключений, путем их возможного отображения на обработчики, представления ошибок на HTML или другие цели.

ViewResolver

Распознает логические имена представлений на основе String, возвращаемые обработчиком, с фактическим View, которое будет визуализироваться в ответе.

LocaleResolver, LocaleContextResolver

Распознает Locale, которую использует клиент, и, возможно, его часовой пояс, чтобы обеспечить интернационализированные представления.

ThemeResolver

Распознает темы, которые может использовать ваше веб-приложение – например, чтобы предлагать персонализированные макеты.

MultipartResolver

Абстракция для парсинга многокомпонентного запроса (например, загрузки файла из браузерной формы) с помощью некоторой библиотеки синтаксического разбора многокомпонентных запросов.

FlashMapManager

Храните и получайте "входной" и "выходной" FlashMap, которые можно использовать для передачи атрибутов от одного запроса к другому, обычно через переадресацию.