Что такое Hoplite и зачем он нужен?
Hoplite — это легковесная, типобезопасная библиотека для конфигурации Kotlin-приложений. Она решает проблему ручного парсинга конфигурационных файлов (YAML, JSON, TOML, HOCON) и преобразования их в строго типизированные Kotlin-объекты. Вместо того чтобы писать десятки строк кода для чтения application.conf, вы определяете data-класс, а Hoplite сам десериализует конфигурацию с валидацией на лету.
Как установить
Добавьте зависимость в build.gradle.kts:
repositories {
mavenCentral()
}
dependencies {
implementation("com.sksamuel.hoplite:hoplite-core:2.7.5")
implementation("com.sksamuel.hoplite:hoplite-yaml:2.7.5") // для YAML
}Основные функции
- Типобезопасность: автоматическое преобразование строк в Int, Boolean, LocalDate, enum и вложенные объекты.
- Валидация: встроенные аннотации
@Range,@Pattern,@NotEmptyи кастомные валидаторы. - Поддержка форматов: YAML, JSON, TOML, HOCON, .properties и переменные окружения.
- Профили: переключение между dev/prod конфигурациями без дублирования кода.
- Секреты: интеграция с Vault и переменными окружения для паролей.
Пример кода на Kotlin
import com.sksamuel.hoplite.ConfigLoader
import 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}")
}Когда использовать
Hoplite идеален для: микросервисов на Ktor или Spring Boot, CLI-утилит, которым нужна строгая типизация, проектов, где требуется разделение на dev/staging/prod профили, и любых Kotlin-приложений, где хочется избежать ConfigFactory.parseResources() и ручного маппинга. Не рекомендуется для простых скриптов с одним-двумя параметрами — там хватит System.getenv().
Заключение
Hoplite делает конфигурацию в Kotlin такой же безопасной и элегантной, как сам язык. Если вы устали от ClassCastException при чтении конфигов — попробуйте эту библиотеку.