Конфигурация приложений Kotlin: Библиотека Hoplite

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое 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 при чтении конфигов — попробуйте эту библиотеку.

Рекомендаций