Was ist Hoplite und warum wird es benötigt?
Hoplite ist eine leichtgewichtige, typsichere Bibliothek zur Konfiguration von Kotlin-Anwendungen. Sie löst das Problem des manuellen Parsens von Konfigurationsdateien (YAML, JSON, TOML, HOCON) und deren Umwandlung in streng typisierte Kotlin-Objekte. Anstatt Dutzende von Codezeilen zum Lesen von application.conf zu schreiben, definieren Sie eine data-Klasse, und Hoplite deserialisiert die Konfiguration selbstständig mit sofortiger Validierung.
Wie installiert man es
Fügen Sie die Abhängigkeit in build.gradle.kts hinzu:
repositories { mavenCentral()}
dependencies { implementation("com.sksamuel.hoplite:hoplite-core:2.7.5") implementation("com.sksamuel.hoplite:hoplite-yaml:2.7.5") // für YAML}Hauptfunktionen
- Typsicherheit: automatische Umwandlung von Strings in Int, Boolean, LocalDate, enum und verschachtelte Objekte.
- Validierung: integrierte Annotationen
@Range,@Pattern,@NotEmptyund benutzerdefinierte Validatoren. - Formatunterstützung: YAML, JSON, TOML, HOCON, .properties und Umgebungsvariablen.
- Profile: Wechsel zwischen dev/prod-Konfigurationen ohne Code-Duplizierung.
- Geheimnisse: Integration mit Vault und Umgebungsvariablen für Passwörter.
Codebeispiel in Kotlin
import com.sksamuel.hoplite.ConfigLoaderimport com.sksamuel.hoplite.yaml.YamlPropertySource
data class DatabaseConfig( val host: String, val port: Int = 5432, val credentials: Credentials)
data class Credentials( val username: String, @com.sksamuel.hoplite.validator.Secret val password: String)
fun main() { val config = ConfigLoader.Builder() .addSource(YamlPropertySource("config.yaml")) .build() .loadConfigOrThrow<DatabaseConfig>()
println("Connecting to ${config.host}:${config.port}") println("User: ${config.credentials.username}")}Wann verwenden
Hoplite ist ideal für: Microservices mit Ktor oder Spring Boot, CLI-Tools, die eine strenge Typisierung benötigen, Projekte, die eine Aufteilung in dev/staging/prod-Profile erfordern, und alle Kotlin-Anwendungen, bei denen man ConfigFactory.parseResources() und manuelles Mapping vermeiden möchte. Nicht empfohlen für einfache Skripte mit ein oder zwei Parametern – dort reicht System.getenv() aus.
Fazit
Hoplite macht die Konfiguration in Kotlin genauso sicher und elegant wie die Sprache selbst. Wenn Sie ClassCastException beim Lesen von Konfigurationen leid sind – probieren Sie diese Bibliothek aus.