Configuration des applications Kotlin : bibliothèques et approches

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Configuration des applications Kotlin : approches modernes et bibliothèques



Une configuration judicieuse est la clé de la flexibilité et de la sécurité de toute application. Dans l'écosystème Kotlin, le développeur dispose d'un large éventail d'outils : des fichiers HOCON classiques aux frameworks puissants avec support de l'injection de dépendances (DI). Dans cet article, nous analyserons les bibliothèques clés, les modèles et les meilleures pratiques de gestion de configuration dans les applications Kotlin.



1. Typesafe Config (HOCON) — standard de l'industrie



Typesafe Config est la bibliothèque la plus populaire pour la configuration des applications JVM. Elle utilise le format HOCON (Human-Optimized Config Object Notation), qui prend en charge l'héritage, l'inclusion de fichiers et les variables d'environnement.



Ajout de la dépendance (Gradle)

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


Exemple de fichier de configuration (application.conf)

app {  name = "MyKotlinApp"  version = "1.0.0"  database {    url = "jdbc:postgresql://localhost:5432/mydb"    user = ${?DB_USER}   # surchargé depuis l'env    password = ${?DB_PASSWORD}  }  features {    enableLogging = true    maxRetries = 3  }}


Chargement 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")}


Avantages : léger, ne nécessite pas de DI, prend en charge ${?ENV_VAR} pour la substitution de variables d'environnement. Idéal pour les microservices et les utilitaires en ligne de commande (CLI).



2. Spring Boot + @ConfigurationProperties



Si vous utilisez Spring Boot, le support intégré de la configuration via application.yml ou application.properties est un choix idéal. La bibliothèque mappe automatiquement les propriétés sur les classes de données Kotlin.



Exemple application.yml

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


Classe de données Kotlin pour la configuration

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)


Utilisation dans un service

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


Avantages : intégration avec DI, validation via @Validated, support des profils (dev/prod). Inconvénients : dépendance à Spring.



3. Ktor + HOCON (pour les applications Ktor)



Pour les applications serveur avec Ktor, la configuration est souvent construite via le module intégré HOCONApplicationConfig. C'est une alternative légère à Spring.



Installation

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


Fichier application.conf (Ktor)

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


Chargement de la configuration dans le code

fun App                    

Recommendations