Configuração de aplicações Kotlin: visão geral de bibliotecas e ferramentas
A configuração é uma parte essencial de qualquer aplicação moderna. De simples variáveis de ambiente a estruturas hierárquicas complexas, o gerenciamento adequado das configurações garante flexibilidade, segurança e facilidade de desenvolvimento. No ecossistema Kotlin, existem várias bibliotecas e abordagens poderosas que permitem resolver eficientemente os problemas de configuração. Neste artigo, vamos analisar as mais populares, comparar seus pontos fortes e fornecer exemplos práticos de uso.
1. Typesafe Config (HOCON)
Typesafe Config (anteriormente conhecido como HOCON — Human-Optimized Config Object Notation) é o padrão de facto para configuração de aplicações JVM escritas em Scala e Java. Graças ao suporte para Kotlin, tornou-se popular também entre desenvolvedores desta linguagem. O HOCON oferece um formato legível com capacidade de herança, inclusão de arquivos e referências a variáveis de ambiente.
Principais funcionalidades:
- Suporte aos formatos
.conf,.json,.properties. - Estrutura hierárquica usando notação por pontos.
- Mesclagem automática de configurações de diferentes fontes.
- Substituição embutida de variáveis de ambiente (
${?VAR_NAME}).
Exemplo de uso em Kotlin:
import com.typesafe.config.ConfigFactory
fun main() { val config = ConfigFactory.load("application.conf")
val appName = config.getString("app.name") val port = config.getInt("server.port") val debug = config.getBoolean("app.debug")
println("App: $appName, Port: $port, Debug: $debug")}Arquivo application.conf:
app { name = "MyKotlinApp" debug = true}server { port = 8080 host = "localhost"}2. Kotlinx.serialization para configuração
A biblioteca Kotlinx.serialization fornece uma forma declarativa de serialização/desserialização de dados. Embora não seja uma ferramenta especializada para configuração, é frequentemente usada para carregar configurações de JSON, YAML ou outros formatos. A principal vantagem é a tipagem estrita e o suporte a data classes do Kotlin.
Exemplo de carregamento de configuração a partir de JSON:
import kotlinx.serialization.Serializableimport kotlinx.serialization.json.Jsonimport java.io.File
@Serializabledata class AppConfig( val name: String, val version: String, val database: DatabaseConfig)
@Serializabledata class DatabaseConfig( val url: String, val user: String, val password: String)
fun loadConfig(path: String): AppConfig { val jsonString = File(path).readText() return Json.decodeFromString(jsonString)}
fun main() { val config = loadConfig("config.json") println("Database URL: ${config.database.url}")}3. Spring Cloud Config (para microsserviços)
Se sua aplicação Kotlin é construída com Spring Boot, o Spring Cloud Config fornece gerenciamento centralizado de configuração. Ele permite armazenar configurações em um repositório Git, criptografar dados sensíveis e atualizá-los dinamicamente sem reiniciar a aplicação.
Como funciona:
- O Config Server carrega a configuração do Git (ou de outros backends).
- As aplicações cliente (Spring Boot + Kotlin) conectam-se ao servidor e obtêm as configurações pelo nome da aplicação e perfil.
- Há suporte para criptografia de valores (por exemplo, senhas).
Exemplo de configuração do cliente:
// application.ymlspring: application: name: my-kotlin-service cloud: config: uri: http://config-server:8888 fail-fast: true
// Código Kotlin@Configuration@ConfigurationProperties(prefix = "app")data class AppProperties( var name: S