Основы Spring MVC
Что делает 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-слой остаётся тонким, а основная логика не зависит от конкретного способа вызова.