Configuração de aplicações Kotlin: bibliotecas e abordagens

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Configuração de aplicações Kotlin: abordagens modernas e bibliotecas



Uma configuração adequada é a chave para a flexibilidade e segurança de qualquer aplicação. No ecossistema Kotlin, o desenvolvedor tem à sua disposição uma ampla gama de ferramentas: desde arquivos HOCON clássicos até frameworks poderosos com suporte a DI. Neste artigo, abordaremos as principais bibliotecas, padrões e melhores práticas de gerenciamento de configuração em aplicações Kotlin.



1. Typesafe Config (HOCON) — padrão da indústria



Typesafe Config é a biblioteca mais popular para configuração de aplicações JVM. Ela utiliza o formato HOCON (Human-Optimized Config Object Notation), que suporta herança, inclusão de arquivos e variáveis de ambiente.



Adição (Gradle)

dependencies {    implementation("com.typesafe:config:1.4.3")}


Exemplo de arquivo de configuração (application.conf)

app {  name = "MyKotlinApp"  version = "1.0.0"  database {    url = "jdbc:postgresql://localhost:5432/mydb"    user = ${?DB_USER}   # sobrescrito a partir de env    password = ${?DB_PASSWORD}  }  features {    enableLogging = true    maxRetries = 3  }}


Carregamento em Kotlin

import com.typesafe.config.ConfigFactory

fun main() { val config = ConfigFactory.load() val appName = config.getString("app.name") val dbUrl = config.getString("app.database.url") val retries = config.getInt("app.features.maxRetries") println("App: $appName, DB: $dbUrl, Retries: $retries")}


Vantagens: leve, não requer DI, suporta ${?ENV_VAR} para substituição de variáveis de ambiente. Ideal para microsserviços e utilitários CLI.



2. Spring Boot + @ConfigurationProperties



Se você usa Spring Boot, o suporte integrado de configuração através de application.yml ou application.properties é a escolha ideal. A biblioteca mapeia automaticamente as propriedades para classes de dados Kotlin.



Exemplo application.yml

app:  name: "SpringKotlinApp"  database:    url: "jdbc:mysql://localhost:3306/db"    pool-size: 10  retry:    enabled: true    max-attempts: 3


Classe de dados Kotlin para configuração

import org.springframework.boot.context.properties.ConfigurationPropertiesimport org.springframework.stereotype.Component

@Component@ConfigurationProperties(prefix = "app")data class AppConfig( val name: String = "", val database: DatabaseConfig = DatabaseConfig(), val retry: RetryConfig = RetryConfig())

data class DatabaseConfig( val url: String = "", val poolSize: Int = 5)

data class RetryConfig( val enabled: Boolean = false, val maxAttempts: Int = 1)


Uso no serviço

@Serviceclass UserService(private val config: AppConfig) {    fun printConfig() {        println("DB URL: ${config.database.url}")        println("Retry enabled: ${config.retry.enabled}")    }}


Prós: integração com DI, validação via @Validated, suporte a perfis (dev/prod). Contras: vinculação ao Spring.



3. Ktor + HOCON (para aplicações Ktor)



Para aplicações servidoras em Ktor, a configuração é frequentemente construída através do módulo embutido HOCONApplicationConfig. Esta é uma alternativa leve ao Spring.



Instalação

dependencies {    implementation("io.ktor:ktor-server-core:2.3.0")    implementation("io.ktor:ktor-server-config-hocon:2.3.0")}


Arquivo application.conf (Ktor)

ktor {  deployment {    port = 8080    host = "0.0.0.0"  }  application {    modules = [ "com.example.ApplicationKt.module" ]  }  custom {    apiKey = ${?API_KEY}    timeoutMs = 5000  }}


Carregamento da configuração no código

fun App                    

Recommendations