Знакомство со SmartMVC
SmartMVC — это набор расширений для Spring MVC на базе Spring Boot. Он объединяет базовые возможности, которые обычно приходится заново реализовывать в каждом веб-проекте. Благодаря этому контроллеры остаются простыми, а поведение API — единообразным.
SmartMVC предоставляет:
- единый формат успешных ответов и универсальную модель пагинации;
- единый формат ошибок, включая ошибки проверки параметров;
- согласованные правила разбора, форматирования и преобразования часовых поясов для даты и времени;
- краткий журнал запросов со статусом ответа и временем выполнения;
- расширяемую модель аутентификации, ролей и разрешений;
- параметры
spring.smart.mvc.*с подсказками и описаниями в IDE.
Как SmartMVC связан со Spring MVC
SmartMVC не заменяет Spring MVC. Вы по-прежнему используете знакомые аннотации @RestController, @GetMapping, @RequestBody и Bean Validation.
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public UserView get(@PathVariable Long id) {
return userService.get(id);
}
}
SmartMVC дополняет этот привычный подход едиными ответами, обработкой исключений, поддержкой времени, журналированием и авторизацией. Наследоваться от базового класса фреймворка или менять бизнес-объекты не требуется.
Зачем нужны модули Core и Starter
Проект состоит из двух основных модулей:
| Модуль | Назначение |
|---|---|
core | Аннотации, модели ответов и настроек, модель текущего пользователя и разрешений, иерархия исключений; не зависит от Spring |
spring-boot-starter-smart-mvc | Привязка настроек Spring Boot, автоконфигурация, MVC-перехватчики, Jackson, журналирование и обработка исключений |
Так основные понятия не оказываются привязаны к конкретному веб-контейнеру. Вся интеграция со Spring сосредоточена в Starter, а приложение при необходимости может заменить ключевые точки расширения.
Для каких проектов подходит SmartMVC
SmartMVC полезен Spring Boot-проектам, которым требуется единообразное REST API. Особенно хорошо он подходит, когда:
- несколько контроллеров должны возвращать ответы одинаковой структуры;
- ошибки проверки и бизнес-ошибки нужно обрабатывать централизованно;
- форматы даты и времени Java должны настраиваться в одном месте;
- нужен простой и заменяемый вход в аутентификацию и авторизацию;
- не хочется заново собирать одну и ту же MVC-инфраструктуру в каждом новом сервисе.
В каком порядке читать документацию
Если вы знакомитесь со SmartMVC впервые, рекомендуем двигаться так:
- Быстрый старт — запустите первый метод API;
- Как SmartMVC обрабатывает запрос — составьте общую картину;
- по мере необходимости изучите ответы, исключения, дату и время, журналирование;
- когда понадобится вход в систему, переходите к разделу об аутентификации и авторизации;
- для точных значений используйте справочник по настройкам и API.