Быстрый старт
В этом разделе мы сделаем только три вещи: добавим зависимости приложения для Web и валидации, подключим SmartMVC и посмотрим на единый ответ первого метода API.
Требования
- Java 17 или новее;
- Spring Boot 3.2 или новее (текущая базовая версия для сборки и тестирования — 3.5.7);
- проект на Maven.
1. Добавьте зависимости приложения
<!-- Предоставляется приложением: Spring MVC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Предоставляется приложением: Bean Validation -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- Добавляет SmartMVC в существующее приложение Spring MVC -->
<dependency>
<groupId>ink.icoding</groupId>
<artifactId>spring-boot-starter-smart-mvc</artifactId>
<version>1.0.0</version>
</dependency>
SmartMVC не добавляет Spring Web и Bean Validation как транзитивные зависимости. Приложение объявляет обе зависимости явно, а их версиями управляет собственный Spring Boot Parent или BOM приложения. Поэтому SmartMVC не фиксирует версии Spring Web и Bean Validation, выбранные приложением.
2. Создайте метод API
package com.example.demo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
@RestController
public class HelloController {
@GetMapping("/hello")
public Greeting hello() {
return new Greeting("Hello, SmartMVC", LocalDateTime.now());
}
public record Greeting(String message, LocalDateTime time) {
}
}
3. Запустите приложение и выполните запрос
mvn spring-boot:run
Вызовите метод API:
curl http://localhost:8080/hello
Ответ по умолчанию выглядит так:
{
"success": true,
"code": "OK",
"message": "success",
"data": {
"message": "Hello, SmartMVC",
"time": "2026-08-06 16:30:00"
},
"timestamp": "1786005000000"
}
Здесь SmartMVC выполнил две операции:
- обернул возвращённый контроллером объект
GreetingвApiResponse; - преобразовал
LocalDateTimeв строку форматаyyyy-MM-dd HH:mm:ss.
По умолчанию timestamp сериализуется как строка, чтобы JavaScript не потерял точность при работе с длинным целым числом.
4. Добавьте минимальную настройку
Все параметры находятся в пространстве spring.smart.mvc. В этом примере изменим только текст успешного ответа и часовой пояс:
spring:
smart:
mvc:
response:
success-message: ok
date-time:
zone-id: Asia/Shanghai
В Starter включены метаданные конфигурации Spring Boot, поэтому IDE может подсказывать имена свойств, значения по умолчанию и варианты перечислений.
Что включено по умолчанию
Без дополнительной настройки:
- обычные значения, возвращаемые контроллерами, оборачиваются в единый ответ;
- методы с типом результата
voidполучают успешный ответ; - распространённые исключения Spring MVC преобразуются в единый формат ошибки;
- проверка параметров включена;
- краткий журнал запросов пишется на уровне
INFO; - используется режим аутентификации
ANNOTATED: обрабатываются только методы API с@Auth; - если приложение не предоставило собственную реализацию аутентификации, Starter использует реализацию, разрешающую все запросы.
Этого достаточно для первого знакомства. В следующем разделе мы рассмотрим эти возможности как части полного жизненного цикла одного запроса.