Spring Boot приложение: пошаговый запуск REST API
Цель кейса: собрать минимальный, но инженерно правильный backend на Spring Boot с endpoint-ами для задач (Todo), хранением данных в БД и базовыми тестами.
Что такое Spring Boot в контексте проекта
Кейс опирается на раздел Java. Перед Spring Boot имеет смысл уверенно пройти основы языка (типы, коллекции, исключения, Maven/Gradle).
Spring— фреймворк для построения Java-приложений (IoC, beans, конфигурация).Spring Boot— надстройка с автоконфигурацией и быстрым стартом веб-сервисов.Starter— набор зависимостей для типовой задачи (web,data-jpa,test).Bean— управляемый Spring-объект.DI(Dependency Injection) — способ получения зависимостей через контейнер Spring.Spring Data JPA— слой доступа к БД без ручного SQL в простых сценариях.
Результат, к которому идем
После кейса у вас будет API:
GET /api/todos— получить список задач;POST /api/todos— создать задачу;PATCH /api/todos/{id}/done— отметить задачу выполненной.
Шаг 1. Создайте проект
Через Spring Initializr:
- Project:
Maven - Language:
Java - Spring Boot: актуальная стабильная версия
- Dependencies:
Spring WebSpring Data JPAH2 DatabaseValidation
Запустите:
./mvnw spring-boot:run
Проверьте, что приложение стартует на http://localhost:8080.
Шаг 2. Организуйте структуру проекта
src/main/java/com/example/todo/
controller/
service/
repository/
model/
dto/
Принцип разделения:
controllerпринимает HTTP-запрос;serviceсодержит бизнес-логику;repositoryработает с БД;modelописывает сущности;dtoописывает формат API.
Шаг 3. Добавьте сущность и репозиторий
Сущность Todo, репозиторий, сервис, контроллер и application.yml — в одном мультифайловом примере:
Шаг 4. Реализуйте сервис
Сервис собирает правила в одном месте:
- создавать задачу только с заполненным названием;
- менять статус только у существующей задачи.
См. вкладку TodoService.java в примере выше.
Шаг 5. Добавьте REST-контроллер
См. вкладку TodoController.java. Проверка:
curl http://localhost:8080/api/todos
Разбор флагов и проверка JSON — curl / fetch — примеры; справочник — утилита curl.
Шаг 6. Настройте БД и миграции
Для учебного старта подходит H2. Для рабочей среды обычно используют PostgreSQL. Минимальная конфигурация — вкладка application.yml в примере кода.
Шаг 7. Добавьте тесты
Минимум два уровня:
- unit-тест сервиса;
- интеграционный тест контроллера через
MockMvc.
Что проверить:
- создание задачи возвращает
201; - пустой
titleвозвращает400; GET /api/todosвозвращает список в ожидаемом формате.
Типичные ошибки и как их избежать
- бизнес-логика внутри контроллера;
- отсутствие валидации входных данных;
- смешивание
Entityи публичного API без DTO; - отсутствие тестов на негативные сценарии.
Чек-лист готовности
- проект запускается локально;
- API-эндпоинты отвечают корректными кодами;
- данные сохраняются и читаются из БД;
- тесты проходят;
- в README есть команда запуска и примеры запросов.
Следующий шаг
Расширьте проект:
- добавьте пагинацию и сортировку;
- подключите PostgreSQL;
- оформите OpenAPI/Swagger;
- добавьте Dockerfile и
docker compose.
Рекомендую читать в энциклопедии
| Тема | Материал |
|---|---|
| Маршрут по Java | Java — о разделе |
| Обзор Spring | Spring Framework |
| Первый REST на Spring Boot | Spring Boot — первая программа |
| Сущности и репозитории | Spring Data JPA |
| Сборка и запуск | Maven и Gradle |
| Безопасность API | Spring Security Basic |