Comment utiliser Dagger dans mon projet et quel est le but de son utilisation ? Je l'ai cherché sur google mais je ne suis pas clair à ce sujet. s'il vous plaît donnez-moi la meilleure solution et un exemple aussi si possible.
Réponse
Trop de publicités?De nombreuses applications Android reposent sur l'instanciation d'objets qui nécessitent souvent d'autres dépendances. Par exemple, un client API Twitter peut être construit à l'aide d'une bibliothèque de mise en réseau telle que Retrofit. Pour utiliser cette bibliothèque, vous pouvez également avoir besoin d'ajouter des bibliothèques d'analyse syntaxique telles que Gson. En outre, les classes qui mettent en œuvre l'authentification ou la mise en cache peuvent nécessiter l'accès à des préférences partagées ou à un autre stockage commun, ce qui exige de les instancier d'abord et de créer une chaîne de dépendances inhérente.
Dagger 2 analyse ces dépendances pour vous et génère du code pour vous aider à les relier. Bien qu'il existe d'autres cadres d'injection de dépendances Java, beaucoup d'entre eux souffrent de limitations en s'appuyant sur le XML, nécessitent de valider les problèmes de dépendances au moment de l'exécution, ou subissent des pénalités de performance au démarrage. Dagger 2 s'appuie uniquement sur l'utilisation de processeurs d'annotations Java et de contrôles à la compilation pour analyser et vérifier les dépendances. Il est considéré comme l'un des cadres d'injection de dépendances les plus efficaces construits à ce jour.
Avantages
Voici une liste d'autres avantages de l'utilisation de Dagger 2 :
-
Simplifie l'accès aux instances partagées. Tout comme la bibliothèque ButterKnife facilite la définition des références aux vues, aux gestionnaires d'événements et aux ressources, Dagger 2 fournit un moyen simple d'obtenir des références aux instances partagées. Par exemple, une fois que nous avons déclaré dans Dagger nos instances singleton telles que MyTwitterApiClient ou SharedPreferences, nous pouvons déclarer des champs avec une simple annotation @Inject :
public class MainActivity extends Activity { @Inject MyTwitterApiClient mTwitterApiClient; @Inject SharedPreferences sharedPreferences; public void onCreate(Bundle savedInstance) { // assign singleton instances to fields InjectorClass.inject(this); } }
-
Configuration facile de dépendances complexes. Il existe un ordre implicite dans lequel vos objets sont souvent créés. Dagger 2 parcourt le graphe des dépendances et génère un code à la fois facile à comprendre et à tracer, tout en vous évitant d'écrire une grande quantité de code passe-partout que vous devriez normalement écrire à la main pour obtenir des références et les transmettre à d'autres objets en tant que dépendances. Cela permet également de simplifier le remaniement, puisque vous pouvez vous concentrer sur les modules à construire plutôt que sur l'ordre dans lequel ils doivent être créés.
-
Des tests unitaires et d'intégration plus faciles Comme le graphe de dépendances est créé pour nous, nous pouvons facilement échanger les modules qui font des réponses réseau et simuler ce comportement.
-
Instances étendues Non seulement vous pouvez facilement gérer des instances qui peuvent durer tout le cycle de vie de l'application, mais vous pouvez également tirer parti de Dagger 2 pour définir des instances avec des durées de vie plus courtes (c'est-à-dire liées à une session utilisateur, au cycle de vie d'une activité, etc.)