Introduction à l'injection de dépendances et aux bibliothèques Hilt/Dagger
\n\nDans le développement moderne d'applications en Kotlin (notamment pour Android), l'un des concepts architecturaux clés est Dependency Injection (DI) — l'injection de dépendances. Il s'agit d'un modèle de conception dans lequel un objet reçoit ses dépendances de l'extérieur, plutôt que de les créer lui-même. Cela rend le code plus flexible, testable et maintenable.
\n\nDagger est un framework DI puissant développé par Google, qui génère du code à la compilation. Il garantit que toutes les dépendances seront fournies correctement et élimine les erreurs d'exécution liées à l'absence de dépendances. Cependant, Dagger a une courbe d'apprentissage abrupte en raison de sa complexité.
\n\nHilt est une surcouche de Dagger, conçue pour simplifier son utilisation dans les applications Android. Hilt fournit des composants standards, des annotations de scope et une intégration automatique avec le cycle de vie Android (Activity, Fragment, ViewModel, etc.). Si vous développez en Kotlin pour Android, Hilt est le choix recommandé car il réduit considérablement le code boilerplate.
\n\nDans cet article, nous examinerons en détail les deux bibliothèques, mais nous nous concentrerons principalement sur Hilt, en tant qu'outil plus moderne et pratique. Vous apprendrez comment installer Hilt, comment utiliser ses annotations et méthodes principales, et nous analyserons des exemples concrets ainsi que les erreurs typiques.
\n\nInstallation de Hilt dans un projet Kotlin/Android
\n\nHilt ne s'installe pas via pip ou npm. Il s'intègre dans un projet Gradle. Pour Kotlin et Android, le processus est le suivant :
\n\n1. Ajout du plugin Hilt dans le build.gradle racine (Project-level)
\n// build.gradle (Project)\nbuildscript {\n repositories {\n google()\n mavenCentral()\n }\n dependencies {\n // ... autres plugins\n classpath 'com.google.dagger:hilt-android-gradle-plugin:2.50' // Vérifiez la version actuelle\n }\n}\n\n\n2. Application du plugin dans le build.gradle du module de l'application (Module-level)
\n// build.gradle (Module: app)\nplugins {\n id 'com.android.application'\n id 'org.jetbrains.kotlin.android'\n id 'kotlin-kapt' // Obligatoire pour Hilt\n id 'dagger.hilt.android.plugin'\n}\n\nandroid {\n // ... votre configuration\n}\n\ndependencies {\n implementation 'com.google.dagger:hilt-android:2.50'\n kapt 'com.google.dagger:hilt-compiler:2.50'\n\n // Pour ViewModel (optionnel, mais recommandé)\n implementation 'androidx.hilt:hilt-navigation-compose:1.1.0' // Pour Jetpack Compose\n // ou\n implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03' // Pour les anciennes versions\n}\n\n\n3. Configuration de la classe Application
\nChaque application utilisant Hilt doit avoir une classe Application annotée avec @HiltAndroidApp.
import android.app.Application\nimport dagger.hilt.android.HiltAndroidApp\n\n@HiltAndroidApp\nclass MyApplication : Application() {\n override fun onCreate() {\n super.onCreate()\n // Initialisation de l'application\n }\n}\n\nN'oubliez pas d'indiquer cette classe dans AndroidManifest.xml :
<application\n android:name=".MyApplication"\n ... >\n\n\nDémarrage rapide avec un exemple de code
\n\nCréons un exemple simple : une application qui salue l'utilisateur, en utilisant Hilt pour injecter la dépendance Greeter.
Étape 1 : Créez la classe qui sera injectée
\nimport javax.inject.Inject\n\nclass Greeter @Inject constructor() {\n fun greet(name: String): String {\n return "Bonjour, $name!"\n }\n}\n\nL'annotation @Inject sur le constructeur indique à Hilt comment créer une instance de cette classe.
Étape 2 : Injection dans une Activity
\nimport android.os.Bundle\nimport android.widge Aussi dans la bibliothèque
Traitement JSON en Kotlin : bibliothèques et exemples d'utilisation
ORM pour Java : comparaison de Hibernate, MyBatis et JPA avec exemples
Jetons JWT en C++ : implémentation et vérification avec jwt-cpp
Symfony/Console PHP : guide complet avec exemples pratiques