REST-сервис каталога коллекций жуков на Java и Spring Boot: пользователи, экземпляры, предложения обмена. Исходная версия сервиса, позже переписанная на Kotlin — см. beetle-management-service.
Стек: Java · Spring Boot · Spring Data JPA · Hibernate · PostgreSQL · Maven
Трёхслойное разделение с интерфейсами между слоями:
controller/ BeetleController — REST-эндпоинты
service/ BeetleService, UserService + реализации в Impl/
repository/ BeetleRepository, UserRepository — Spring Data JPA
model/ Beetle, User, ExchangeOffers — сущности
ResourceNotFoundException отдельный тип для 404
src/main/resources/query.sql содержит исходные запросы, по которым проектировалась схема.
flowchart LR
HTTP["HTTP-запрос"]
C["controller<br/>REST-граница"]
S["service<br/>бизнес-логика"]
R["repository<br/>Spring Data JPA"]
DB[("PostgreSQL")]
E["ResourceNotFoundException<br/>-> 404"]
HTTP --> C
C --> S
S --> R
R --> DB
S -.-> E
E -.-> C
Каждый слой обращается только к соседнему снизу и знает его как интерфейс, а не как реализацию — поэтому хранилище можно подменить, не трогая контроллеры.
Нужны JDK 17+ и PostgreSQL с базой BugCollection.
./mvnw spring-boot:runПараметры подключения — в src/main/resources/application.properties; подставьте свои
учётные данные. Таблицы создаются автоматически (ddl-auto=update).
Тот же сервис на Kotlin, Gradle и с метриками Prometheus: beetle-management-service. Репозитории удобно смотреть рядом — видно, что именно меняется при переносе Spring-приложения с Java/Maven на Kotlin/Gradle.