Dependency Injection और Hilt/Dagger लाइब्रेरी का परिचय
आधुनिक Kotlin (खासकर Android) एप्लिकेशन डेवलपमेंट में, सबसे महत्वपूर्ण आर्किटेक्चरल अवधारणाओं में से एक है Dependency Injection (DI) - डिपेंडेंसी इंजेक्शन। यह एक डिज़ाइन पैटर्न है जिसमें कोई ऑब्जेक्ट अपनी डिपेंडेंसी खुद नहीं बनाता, बल्कि उन्हें बाहर से प्राप्त करता है। इससे कोड अधिक लचीला, टेस्ट करने योग्य और मेंटेन करने में आसान हो जाता है।
Dagger Google द्वारा विकसित एक शक्तिशाली DI फ्रेमवर्क है, जो कंपाइल टाइम पर कोड जनरेट करता है। यह सुनिश्चित करता है कि सभी डिपेंडेंसी सही ढंग से प्रदान की जाएं और रनटाइम एरर को खत्म करता है। हालांकि, अपनी जटिलता के कारण Dagger सीखना थोड़ा मुश्किल हो सकता है।
Hilt Dagger के ऊपर बनी एक लेयर है, जिसे Android एप्लिकेशन में इसके उपयोग को सरल बनाने के लिए बनाया गया है। Hilt स्टैंडर्ड कंपोनेंट्स, स्कोप एनोटेशन और Android के लाइफसाइकिल (Activity, Fragment, ViewModel आदि) के साथ ऑटोमैटिक इंटीग्रेशन प्रदान करता है। अगर आप Android के लिए Kotlin में लिख रहे हैं, तो Hilt सबसे अच्छा विकल्प है, क्योंकि यह बॉयलरप्लेट कोड को काफी कम कर देता है।
इस लेख में हम दोनों लाइब्रेरीज के बारे में विस्तार से जानेंगे, लेकिन मुख्य फोकस Hilt पर रहेगा, जो अधिक आधुनिक और सुविधाजनक टूल है। आप सीखेंगे कि Hilt कैसे इंस्टॉल करें, इसके मुख्य एनोटेशन और तरीकों का उपयोग कैसे करें, साथ ही रियल उदाहरण और सामान्य गलतियों को भी समझेंगे।
Kotlin/Android प्रोजेक्ट में Hilt की स्थापना (इंस्टॉलेशन)
Hilt pip या npm के ज़रिए इंस्टॉल नहीं होता। इसे Gradle प्रोजेक्ट में इंटीग्रेट किया जाता है। Kotlin और Android के लिए प्रक्रिया इस प्रकार है:
1. रूट build.gradle (Project-level) में Hilt प्लगइन जोड़ें
// build.gradle (Project)
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
// ... अन्य प्लगइन
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.50' // नवीनतम वर्जन देखें
}
}
2. ऐप मॉड्यूल के build.gradle (Module-level) में प्लगइन लागू करें
// build.gradle (Module: app)
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt' // Hilt के लिए अनिवार्य
id 'dagger.hilt.android.plugin'
}
android {
// ... आपका कॉन्फ़िगरेशन
}
dependencies {
implementation 'com.google.dagger:hilt-android:2.50'
kapt 'com.google.dagger:hilt-compiler:2.50'
// ViewModel के लिए (वैकल्पिक, लेकिन अनुशंसित)
implementation 'androidx.hilt:hilt-navigation-compose:1.1.0' // Jetpack Compose के लिए
// या
implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03' // पुराने वर्जन के लिए
}
3. Application क्लास सेट करें
Hilt का उपयोग करने वाले हर ऐप में एक Application क्लास होना चाहिए जिस पर @HiltAndroidApp एनोटेशन लगा हो।
import android.app.Application
import dagger.hilt.android.HiltAndroidApp
@HiltAndroidApp
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
// ऐप इनिशियलाइज़ेशन
}
}
इस क्लास को AndroidManifest.xml में ज़रूर बताएं:
<application
android:name=".MyApplication"
... >
कोड उदाहरण के साथ त्वरित शुरुआत
चलिए एक सरल उदाहरण बनाते हैं: एक ऐप जो Hilt का उपयोग करके Greeter डिपेंडेंसी को इंजेक्ट करता है और उपयोगकर्ता का स्वागत करता है।
चरण 1: इंजेक्ट होने वाला क्लास बनाएं
import javax.inject.Inject
class Greeter @Inject constructor() {
fun greet(name: String): String {
return "नमस्ते, $name!"
}
}
कंस्ट्रक्टर पर @Inject एनोटेशन Hilt को बताता है कि इस क्लास का इंस्टेंस कैसे बनाना है।
चरण 2: Activity में इंजेक्शन करें
import android.os.Bundle
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import dagger.hilt.android.An