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 Web
    • Spring Data JPA
    • H2 Database
    • Validation

Запустите:

./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.

Что проверить:

  1. создание задачи возвращает 201;
  2. пустой title возвращает 400;
  3. 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