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

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

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

ابدأ الدورة

تكوين تطبيقات Kotlin: نظرة عامة على المكتبات والأدوات

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



1. Typesafe Config (HOCON)

HOCON (Human-Optimized Config Object Notation) هو تنسيق لملفات التكوين ومكتبة تم تطويرها لمنصة JVM. تُستخدم على نطاق واسع في مشاريع Kotlin، خاصةً مع أطر العمل مثل Akka أو Play Framework أو Lagom. المزايا الرئيسية: بناء جملة موجز، دعم الوراثة، الإشارات إلى قيم أخرى، وتضمين الملفات.



التثبيت

// build.gradle.ktsimplementation("com.typesafe:config:1.4.3")


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

app {  name = "MyKotlinApp"  version = "1.0.0"  server {    host = "localhost"    port = 8080  }  database {    url = "jdbc:postgresql://${app.server.host}:5432/mydb"    user = "admin"    password = ${?DB_PASSWORD} // استبدال من متغير البيئة  }}


قراءة التكوين في Kotlin

import com.typesafe.config.ConfigFactory

fun main() { val config = ConfigFactory.load() val appName = config.getString("app.name") val port = config.getInt("app.server.port") val dbUrl = config.getString("app.database.url") println("App: $appName, Port: $port, DB URL: $dbUrl")}

تقوم المكتبة تلقائياً بتحميل application.conf من classpath وتدعم تجاوز الإعدادات عبر متغيرات البيئة أو معاملات JVM.



2. Koin — التكوين عبر حقن التبعيات

Koin هو إطار عمل DI خفيف الوزن لـ Kotlin، ويمكن استخدامه أيضاً لإدارة التكوين. يسمح بتعريف الإعدادات كـ singletons أو factories وحقنها في مكونات التطبيق.



مثال مع Koin

// تعريف الوحدة النمطية مع التكوينval appModule = module {    single {        AppConfig(            name = "KoinApp",            version = "2.0",            port = 9090        )    }}

// تشغيل KoinstartKoin { modules(appModule)}

// الاستخدامclass MyService(private val config: AppConfig) { fun start() = println("Starting ${config.name} on port ${config.port}")}

Koin مناسب للمشاريع الصغيرة والمتوسطة حيث لا ترغب في إضافة أطر عمل ثقيلة. يبقى التكوين في الكود، ولكن يمكن استخراجه إلى ملفات منفصلة أو تحميله من متغيرات البيئة.



3. Spring Boot و @ConfigurationProperties

بالنسبة للمشاريع التي تستخدم Spring Boot، فإن التكوين مدمج على مستوى الإطار. يتم تعليق فئات التكوين بـ @ConfigurationProperties، ويتم تحميل القيم من application.yml أو application.properties.



مثال

// application.ymlapp:  name: SpringKotlinApp  server:    port: 8080  database:    url: jdbc:postgresql://localhost:5432/mydb

// فئة Kotlin@ConfigurationProperties(prefix = "app")data class AppProperties( val name: String, val server: ServerConfig, val database: DatabaseConfig) { data class ServerConfig(val port: Int) data class DatabaseConfig(val url: String)}

// الاستخدام في الخدمة@Serviceclass MyService(private val props: AppProperties) { fun info() = "App: ${props.name}, Port: ${props.server.port}"}

يدعم Spring Boot الملفات الشخصية

توصيات