Configuración de aplicaciones Kotlin: bibliotecas y enfoques

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Configuración de aplicaciones Kotlin: enfoques modernos y bibliotecas



Una configuración adecuada es la clave para la flexibilidad y seguridad de cualquier aplicación. En el ecosistema Kotlin, el desarrollador tiene a su disposición una amplia gama de herramientas: desde archivos HOCON clásicos hasta potentes frameworks con soporte para DI. En este artículo, analizaremos las bibliotecas clave, los patrones y las mejores prácticas para la gestión de la configuración en aplicaciones Kotlin.



1. Typesafe Config (HOCON) — el estándar de la industria



Typesafe Config es la biblioteca más popular para la configuración de aplicaciones JVM. Utiliza el formato HOCON (Human-Optimized Config Object Notation), que soporta herencia, inclusión de archivos y variables de entorno.



Inclusión (Gradle)

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


Ejemplo de archivo de configuración (application.conf)

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


Carga en 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")}


Ventajas: ligero, no requiere DI, soporta ${?ENV_VAR} para sustitución de variables de entorno. Ideal para microservicios y utilidades CLI.



2. Spring Boot + @ConfigurationProperties



Si utiliza Spring Boot, el soporte integrado de configuración a través de application.yml o application.properties es la elección ideal. La biblioteca mapea automáticamente las propiedades a clases de datos de Kotlin.



Ejemplo application.yml

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


Clase de datos Kotlin para configuración

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 en un servicio

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


Ventajas: integración con DI, validación mediante @Validated, soporte de perfiles (dev/prod). Desventajas: vinculación a Spring.



3. Ktor + HOCON (para aplicaciones Ktor)



Para aplicaciones de servidor en Ktor, la configuración a menudo se construye a través del módulo integrado HOCONApplicationConfig. Esta es una alternativa ligera a Spring.



Instalación

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


Archivo application.conf (Ktor)

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


Carga de configuración en código

fun App                    

Recommendations