تكوين تطبيقات Kotlin: المكتبات والمنهجيات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

تكوين تطبيقات Kotlin: المنهجيات الحديثة والمكتبات



التكوين الجيد هو مفتاح المرونة والأمان لأي تطبيق. في نظام Kotlin البيئي، يتوفر للمطور مجموعة واسعة من الأدوات: من ملفات HOCON الكلاسيكية إلى الأطر القوية التي تدعم حقن التبعيات (DI). في هذه المقالة، سنستعرض المكتبات الرئيسية والأنماط وأفضل الممارسات لإدارة التكوين في تطبيقات Kotlin.



1. Typesafe Config (HOCON) — المعيار الصناعي



Typesafe Config هي المكتبة الأكثر شيوعًا لتكوين تطبيقات JVM. تستخدم تنسيق HOCON (Human-Optimized Config Object Notation) الذي يدعم الوراثة، وتضمين الملفات، ومتغيرات البيئة.



الإضافة (Gradle)

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


مثال لملف التكوين (application.conf)

app {  name = "MyKotlinApp"  version = "1.0.0"  database {    url = "jdbc:postgresql://localhost:5432/mydb"    user = ${?DB_USER}   # يتم تجاوزه من متغيرات البيئة    password = ${?DB_PASSWORD}  }  features {    enableLogging = true    maxRetries = 3  }}


التحميل في 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")}


المزايا: خفيف الوزن، لا يتطلب حقن تبعيات، يدعم ${?ENV_VAR} لاستبدال متغيرات البيئة. مناسب جدًا للخدمات المصغرة وأدوات سطر الأوامر.



2. Spring Boot + @ConfigurationProperties



إذا كنت تستخدم Spring Boot، فإن الدعم المدمج للتكوين عبر application.yml أو application.properties هو الخيار الأمثل. تقوم المكتبة تلقائيًا بتعيين الخصائص إلى فئات بيانات Kotlin.



مثال application.yml

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


فئة بيانات Kotlin للتكوين

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)


الاستخدام في الخدمة

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


الإيجابيات: التكامل مع حقن التبعيات، التحقق عبر @Validated، دعم الملفات التعريفية (dev/prod). السلبيات: الارتباط بـ Spring.



3. Ktor + HOCON (لتطبيقات Ktor)



لتطبيقات الخادم على Ktor، غالبًا ما يتم بناء التكوين عبر الوحدة المدمجة HOCONApplicationConfig. هذا بديل خفيف الوزن لـ Spring.



التثبيت

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


ملف application.conf (Ktor)

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


تحميل التكوين في الكود

fun App                    

توصيات