Skip to content

EffectiveMobile/SpringToDo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Практическое задание №1: Spring Boot TODO приложение

Создайте простое RESTful API веб-сервиса с использованием Spring Boot. Нужно реализовать приложение для управления списком дел (TODO).


Требования к приложению

  • База данных: Использовать PostgreSQL.
  • Миграции: Настроить миграции с помощью Liquibase или Flyway. Миграции должны автоматически применяться при старте приложения и в тестах.
  • Работа с БД: Не использовать Hibernate/JPA, вместо этого использовать JdbcTemplate.
  • Тестирование:
    • Покрыть приложение юнит и интеграционными тестами.
    • Интеграционные тесты для всех контроллеров через JSON Assert.
    • Настроить тестовую БД через Testcontainers.
    • Использовать @DataJpaTest для грязного контекста БД.
    • Применять @Sql для подготовки данных.
    • Все тесты снабдить @DisplayName для читаемости логов.
  • Кеширование: Использовать Spring Cache и Redis.
  • Документация: Описать API с помощью OpenAPI/Swagger и вынести описание эндпоинтов в отдельный интерфейс.
  • Валидация: Обеспечить валидацию всех входящих DTO.
  • Пагинация: Реализовать limit-offset пагинацию для списка дел.
  • Обработка ошибок:
    • Добавить глобальный ExceptionHandler для обработки ошибок.
    • Написать тесты на обработку ошибок.
  • Ответы API: Не использовать ResponseEntity напрямую.
  • Маппинг: Использовать MapStruct для преобразования Entity в DTO.
  • Мониторинг:
    • Подключить Spring Boot Actuator.
    • Открыть доступ к эндпоинтам `/actuator/health`, `/actuator/metrics`, `/actuator/info`.
    • Создать минимум одну кастомную метрику с использованием Micrometer (например, количество выполненных задач).

Как выполнить задание

  1. Сделать fork данного проекта.
  2. Создать ветку dev в своём репозитории и работать в ней.
  3. После завершения работы открыть Pull Request в master своего репозитория.
  4. Назначить ментора ревьювером на PR.
  5. Отправить ссылку на PR в Telegram-чат ментору.

Технические детали

Технология Описание
Java 17+
Spring Boot 3.x
PostgreSQL Latest
Liquibase/Flyway Latest
Redis Latest
Testcontainers Latest
MapStruct Latest
Swagger / OpenAPI Latest
Spring Actuator Latest

Требования к структуре

  • Код должен быть чистым и структурированным.
  • Пакеты следует логически организовать: controller, service, repository, dto, config, exception и т.д.
  • Бизнес-ошибки должны обрабатываться централизованно через единый ExceptionHandler.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages