DispatcherServlet использует обработчики запросов (Handler Mappings) для определения контроллера и метода, который соответствует входящему HTTP-запросу.
Основные шаги:
RequestMappingHandlerMapping).@RequestMapping).HandlerExecutionChain, который содержит информацию о обработчике (обычно это метод контроллера) и списке перехватчиков (interceptors).HandlerInterceptor.preHandle()).HandlerAdapter (например, RequestMappingHandlerAdapter). HandlerAdapter отвечает за преобразование аргументов запроса в параметры метода контроллера и преобразование возвращаемого значения метода в ответ HTTP (например, ModelAndView, String, JSON и т.д.).HandlerInterceptor.postHandle()), определяет View (если необходимо) через ViewResolver, и рендерит ответ, выполняя HandlerInterceptor.afterCompletion() после отправки ответа.Типичные HandlerMapping'и в Spring MVC:
RequestMappingHandlerMapping: Основан на аннотациях @RequestMapping, @GetMapping, @PostMapping и т.д. Наиболее часто используемый.SimpleUrlHandlerMapping: Сопоставляет URL-пути напрямую с именами контроллеров или фабрик.BeanNameUrlHandlerMapping: Сопоставляет URL-пути с именами бинов контроллеров.Пример использования @RequestMapping:
java
В этом примере, при запросе /api/users/hello методом GET, RequestMappingHandlerMapping найдет UserController и вызовет метод sayHello().