Назад к вопросам
Junior — Middle
61
Каким образом DispatcherServlet идентифицирует конкретный класс контроллера для обработки входящего запроса?
Ответ от нейросети
sobes.tech AI
В Spring MVC класс DispatcherServlet отвечает за маршрутизацию HTTP-запросов к соответствующим контроллерам.
Идентификация конкретного контроллера происходит через механизм сопоставления URL-запроса с методами контроллеров, который реализован с помощью:
-
HandlerMapping:
- DispatcherServlet использует один или несколько бинов HandlerMapping для поиска подходящего обработчика.
- Обычно это RequestMappingHandlerMapping, который сопоставляет URL и HTTP-метод с методами, аннотированными
@RequestMappingили подобными.
-
Аннотации в контроллерах:
- Методы контроллеров помечаются аннотациями, указывающими путь и HTTP-метод.
- Например,
@GetMapping("/users").
-
Поиск и выбор контроллера:
- DispatcherServlet передаёт запрос HandlerMapping, который возвращает HandlerMethod (метод контроллера).
- Затем DispatcherServlet вызывает этот метод для обработки запроса.
Пример:
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public User getUser(@PathVariable String id) {
// обработка запроса
}
}
При запросе GET /users/123 DispatcherServlet через HandlerMapping найдёт метод getUser класса UserController и вызовет его.