В Spring MVC, на какой компонент передается запрос после DispatcherServlet?

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

Ответ

После DispatcherServlet запрос передается на цепочку компонентов для поиска и выполнения контроллера.

Последовательность обработки:

  1. HandlerMapping: Определяет, какой контроллер (@Controller) должен обработать запрос, основываясь на URL и HTTP-методе.
  2. HandlerAdapter: Вызывает соответствующий метод найденного контроллера, разрешая параметры и обрабатывая аннотации (например, @GetMapping).

Пример контроллера:

@Controller
public class GreetingController {
    @GetMapping("/hello")
    public String sayHello(Model model) {
        model.addAttribute("message", "Hello, Spring MVC!");
        return "greeting"; // Логическое имя представления (View)
    }
}
  1. После выполнения метода контроллера результат передается в ViewResolver для преобразования логического имени представления (например, "greeting") в конкретное (JSP, Thymeleaf шаблон). Затем происходит рендеринг и ответ отправляется клиенту.