79 lines
3.2 KiB
Kotlin
79 lines
3.2 KiB
Kotlin
// Optimized Spring Boot ping service for testing microservice architecture
|
|
// This service demonstrates circuit breaker patterns, service discovery, and monitoring
|
|
plugins {
|
|
alias(libs.plugins.kotlinJvm)
|
|
alias(libs.plugins.kotlinSpring)
|
|
alias(libs.plugins.spring.boot)
|
|
alias(libs.plugins.spring.dependencyManagement)
|
|
}
|
|
|
|
// Build optimization settings
|
|
java {
|
|
toolchain {
|
|
languageVersion.set(JavaLanguageVersion.of(21))
|
|
}
|
|
}
|
|
|
|
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
|
|
compilerOptions {
|
|
freeCompilerArgs.addAll("-Xjsr305=strict")
|
|
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_21)
|
|
}
|
|
}
|
|
|
|
// Configure the main class for the executable JAR
|
|
springBoot {
|
|
mainClass.set("at.mocode.ping.service.PingServiceApplicationKt")
|
|
buildInfo()
|
|
}
|
|
|
|
dependencies {
|
|
// === Platform Dependencies ===
|
|
// Ensure all versions come from the central BOM
|
|
implementation(platform(projects.platform.platformBom))
|
|
// Provide common Kotlin dependencies (coroutines, serialization, logging)
|
|
implementation(projects.platform.platformDependencies)
|
|
// Contract module for type-safe DTOs and API interface
|
|
implementation(projects.services.ping.pingApi)
|
|
// Monitoring client: tracing + zipkin + defaults
|
|
implementation(projects.infrastructure.monitoring.monitoringClient)
|
|
// === Core Spring Boot Dependencies ===
|
|
// Web starter for REST endpoints
|
|
implementation(libs.spring.boot.starter.web)
|
|
// Jackson Kotlin module for data classes and Kotlin features
|
|
implementation(libs.jackson.module.kotlin)
|
|
// Kotlin reflection for Spring Boot Kotlin serialization
|
|
implementation("org.jetbrains.kotlin:kotlin-reflect")
|
|
// Validation for request/response validation
|
|
implementation(libs.spring.boot.starter.validation)
|
|
// Spring Security for method-level authorization
|
|
implementation("org.springframework.boot:spring-boot-starter-security")
|
|
// Actuator for health checks and metrics
|
|
implementation(libs.spring.boot.starter.actuator)
|
|
// === Service Discovery ===
|
|
// Spring Cloud Consul for service registration and discovery
|
|
implementation(libs.spring.cloud.starter.consul.discovery)
|
|
// === Caching ===
|
|
// Caffeine cache for Spring Cloud LoadBalancer (resolves production cache warning)
|
|
implementation("com.github.ben-manes.caffeine:caffeine")
|
|
implementation("org.springframework:spring-context-support")
|
|
// === Resilience & Fault Tolerance ===
|
|
// Resilience4j Circuit Breaker for fault tolerance
|
|
implementation(libs.resilience4j.spring.boot3)
|
|
implementation(libs.resilience4j.reactor)
|
|
implementation(libs.spring.boot.starter.aop)
|
|
// === Monitoring & Metrics ===
|
|
// Micrometer for metrics collection and Prometheus integration
|
|
implementation(libs.micrometer.prometheus)
|
|
// === Documentation ===
|
|
// OpenAPI 3 documentation generation
|
|
implementation(libs.springdoc.openapi.starter.webmvc.ui)
|
|
// === Testing Dependencies ===
|
|
// Platform testing utilities
|
|
testImplementation(projects.platform.platformTesting)
|
|
// JVM testing bundle (JUnit, AssertJ, Mockk)
|
|
testImplementation(libs.bundles.testing.jvm)
|
|
// Spring Boot testing starter
|
|
testImplementation(libs.spring.boot.starter.test)
|
|
}
|