Пример сервиса реализованного на Kora с упрощенным HTTP CRUD API использующий разделение сервиса на проектные модули по функциональности, в качестве базы данных выступает Postgres, используется кэш Caffeine, а также другие модули которые использовались бы в реальном приложении в бою.
В примере использовались модули:
- HTTP Server
- HTTP Server OpenAPI Generation
- Probes
- Metrics
- Database JDBC
- JSON
- Resilient
- Validation
- Cache Caffeine
Основной функционал и точка входа в приложение находится в модуле kora-java-crud-submodule-app.
Собрать классы:
./gradlew classesСобрать артефакт:
./gradlew distTarСгенерировать API для HTTP Server:
./gradlew openApiGenerateHttpServerСобрать образ приложения:
docker build -t kora-java-crud-submodule .Миграции вызываются с помощью Flyway Gradle Plugin:
./gradlew flywayMigrateПеред запуском локально требуется запустить базу Postgres и накатить миграции.
Запустить локально:
./gradlew runТребуется сначала собрать артефакт:
./gradlew distTarЗапустить как docker-compose:
docker-compose upТесты используют Testcontainers, требуется Docker окружение для запуска тестов или аналогичные контейнерные окружения (colima / итп)
Протестировать локально:
./gradlew test