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

Одним из важных интерфейсов в Spring является HandlerMapping. Рассмотрим его более подробно.

Диспетчер сервлетов DisptacherSevlet Spring’а с помощью Handler Mapping определяет какой контроллер он должен использовать для определенного запроса request. Возьмем картинку из статьи Spring MVC – основные понятия, архитектура.

SpringMVC detail

1. Описание интерфейса HandlerMapping

По определению HandlerMapping — интерфейс, который реализуется объектами, которые определяют отображение между запросами и объектами обработчиков.

Реализации HandlerMapping могут поддерживать перехватчики (interceptors), но не содержат их. Обработчик будет всегда обернут в экземпляре HandlerExecutionChain, возможно в сопровождении некоторых экземпляров HandlerInterceptor. DispatcherServlet сначала вызывает  метод preHandle каждого HandlerInterceptor в заданном порядке, и в конце, внедряет обработчик, если все методы preHandle вернули true.

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

2. Реализация HandlerMapping по умолчанию

По умолчанию интерфейс HandlerMapping в Spring MVC реализуется классом RequestMappingHandlerMapping. Существуют другие реализации интерфейса, которые используют другие параметры для поиска контроллера, соответствующего запросу.

В Spring MVC вы можете встретить реализацию интерфейса, когда применяете аннотацию @RequestMapping. Например отрывок из Spring MVC – Hello World:

Для многих задач базовых настроек реализации HandlerMapping вполне достаточно.

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

Spring MVC – основные понятия, архитектура

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

Spring MVC – описание интерфейса ViewResolver

 

Share Button
21
15621 Total Views 5 Views Today

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