Основы Spring MVC

Базовый Spring
≈ 2 мин чтения

Что делает Spring MVC

HTTP-сервер получает запросы, но приложению нужен удобный способ связать их с Java-кодом. Spring MVC берёт эту задачу на себя: по адресу и HTTP-методу он находит подходящий обработчик, подготавливает его аргументы, вызывает метод и затем превращает результат в HTTP-ответ.

Контроллер при этом остаётся обычным Spring bean. Поэтому он может получать сервисы через Dependency Injection и заниматься только web-задачами, не создавая зависимости вручную.

@RestController
class GreetingController {

    private final GreetingService greetingService;

    GreetingController(GreetingService greetingService) {
        this.greetingService = greetingService;
    }

    @GetMapping("/greeting")
    String greeting() {
        return greetingService.message();
    }
}

Здесь Spring MVC связывает запрос GET /greeting с методом greeting(). Детали mapping, тела ответа и REST-контроллеров разберём на следующих страницах; сейчас важна сама идея: HTTP-запрос становится вызовом обычного Java-метода.

Где проходит граница web-слоя

Контроллер отвечает за то, что относится к HTTP: принять данные запроса, выбрать подходящий формат ответа и передать работу дальше. Бизнес-правила лучше оставлять сервисам и другим компонентам приложения. Так web-слой остаётся тонким, а основная логика не зависит от конкретного способа вызова.

Spring MVC — часть Spring Framework, а не Spring Boot. Boot упрощает подключение и настройку web-приложения, но сам механизм обработки запросов предоставляет Spring MVC.