Что такое Spring MVC?

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

Ответ

Spring MVC — это модуль фреймворка Spring для построения веб-приложений, реализующий архитектурный паттерн Model-View-Controller (MVC).

Основные компоненты:

  • Model: Содержит данные приложения (обычно в виде Map, Model, ModelAndView или POJO/DTO).
  • View: Отвечает за рендеринг пользовательского интерфейса (JSP, Thymeleaf, FreeMarker).
  • Controller: Обрабатывает HTTP-запросы, взаимодействует с сервисным слоем и подготавливает Model и View.

Как это работает (упрощенно):

  1. DispatcherServlet (Front Controller) получает запрос.
  2. Он делегирует запрос соответствующему @Controller на основе маппинга URL.
  3. Контроллер вызывает бизнес-логику, помещает данные в Model.
  4. DispatcherServlet разрешает View и передает ему Model для рендеринга ответа.

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

@Controller
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    public String getUser(@PathVariable Long id, Model model) {
        User user = userService.findById(id);
        model.addAttribute("user", user); // Добавляем в Model
        return "user-details"; // Имя представления (user-details.html)
    }

    @PostMapping
    public String createUser(@ModelAttribute User user) {
        userService.save(user);
        return "redirect:/users"; // Перенаправление
    }
}

Ключевые аннотации: @Controller, @RequestMapping, @GetMapping/@PostMapping, @PathVariable, @ModelAttribute, @ResponseBody.