Table des matières
- Présentation
- Qu'est-ce que l'injection de dépendance, exemple de dépendance
- Dague 2 - Introduction
- Première utilisation de Dagger 2
Présentation
L'article n'est pas écrit par un programmeur avancé pour les mêmes mots, ordinaires et compréhensibles.
Cet article utilise l'exemple de code Kotlin. Dague version 2.17. Un exemple peut être téléchargé à la fin de l'article.
Qu'est-ce que l'injection de dépendance?
L'injection de dépendance (injection ou injection de dépendance) est la dépendance d'une classe par rapport à une autre. c'est-à-dire pour le fonctionnement complet d'une classe, l'initialisation de l'autre (leur) classe est nécessaire.
Par exemple, la classe Car (voiture) ne peut pas fonctionner sans la classe Engine, qui à son tour ne peut pas fonctionner sans la classe Fuel. Cela ressemble à ceci:
class Car(private var engine: Engine) class Engine ( private var fuel: Fuel) class Fuel(){ private val fuel = if(BuildConfig.DEBUG){ “benzine” } else { “diesel” } }
Dans cet exemple, la classe Car dépend de la classe Engine, et cela, à son tour, dépend de la classe Fuel.
Dague 2 - Introduction
Dagger est une bibliothèque qui aide à implémenter l'injection de dépendances:. Ceci est une bibliothèque google. Une documentation détaillée est
disponible ici .
Avantages du poignard:
- Je dois écrire moins de code passe-partout.
- Aide à structurer les dépendances.
- Il simplifie considérablement le travail lorsqu'il y a beaucoup de dépendances
- Le code devient facile à lire.
Inconvénients de la dague:
- Manque de documentation détaillée
- Dagger essaie de comprendre les intentions du développeur à l'aide d'annotations. Cela se complique quand il ne vous comprend pas correctement
- poignard génère du code tout aussi difficile à repérer
Première utilisation de Dagger 2
Tout d'abord, vous devez ajouter un poignard à l'application. Je connais 2 méthodes pour le faire
1. Ouvrez build.gradle (App) et ajoutez une trace.
1.1 Tout en haut de la section de déclaration du plugin
apply plugin: 'kotlin-kapt'
1.2 dans la section des dépendances
{ ... kapt "com.google.dagger:dagger-compiler:$dagger_version" implementation "com.google.dagger:dagger:$dagger_version" }
Je spécifie la version de dagger (dagger_version) dans la section
ext { dagger_version = '2.17' }
Si ce n'est pas le cas, la section doit être ajoutée au-dessus de la section Android.
2. Ajouter un référentiel Maven via la structure du projet - Dépendances - Ajouter des dépendances de bibliothèque
Après avoir synchronisé le projet, nous sommes prêts à implémenter les dépendances à l'aide de la dague.
Commencez par créer les classes Voiture, Moteur et Carburant:
class Car constructor(private var engine: Engine) class Engine constructor(private var fuel: Fuel) class Fuel { private val fuelType = if(BuildConfig.DEBUG){ "benzine" }else{ "diesel" } }
Avant les constructeurs des classes Car, Engine et Fuel, nous ajoutons l'annotation Inject dagger, permettant ainsi à dagger de comprendre que ces classes doivent être implémentées si nécessaire. Nous obtenons la trace.
class Car @Inject constructor(private var engine: Engine) class Engine @Inject constructor(private var fuel: Fuel) class Fuel @Inject constructor() { private val fuelType = if(BuildConfig.DEBUG){ "benzine" }else{ "diesel" } }
Dagger a besoin de savoir comment créer tous les objets dont il a besoin pour implémenter. Afin de lister toutes les classes que nous implémentons (Inject), l'annotation
Component est utilisée, qui est déclarée pour l'interface (DaggerComponent).
Cela ressemble à ceci:
@Component interface DaggerComponent { fun getCar(): Car fun getEngine(): Engine fun getFuel(): Fuel }
Lors de la déclaration de méthodes de composant, ce ne sont pas les noms de méthode qui sont importants, mais la classe qu'ils renvoient.
À cette étape, vous devez créer un projet (Build - Rebuild project). Après cela, le poignard générera les classes et la fabrique nécessaires pour initialiser les composants. Le nom de la fabrique coïncidera avec le nom de l'interface dans laquelle on initialise les classes pour la dague, sauf que le préfixe "Dague" sera ajouté, ie à la sortie, nous obtenons la classe DaggerDaggerComponent.
Tout est prêt. Essayons de créer un champ de voiture de type Car dans MainActivity:
private var car: Car = DaggerDaggerComponent.create().getCar()
En lançant l'application, vous pouvez vous assurer que le champ de voiture est initialisé lorsque vous y accédez
Code source