Cet article me sert de notes sur dagger 2 et a pour but de vulgariser sa compréhension.
Toute contribution est la bienvenu.

Commençons par le début, à quoi sert Dagger?

Réponse : faire de l'injection de dépendance.

La réponse pour le commun des mortels :

Dagger permet d'utiliser des objets complexes, sans se prendre la tête à les construire indéfiniment.

C'est magique? Non pas vraiment malheureusement :O

"Mais... Mais... On nous a dit que Dagger c'est super puissant de la mort qui tue et tout et tout!"

Ces objets, on doit quand même s'embêter à les construire quelques part en réalité.
Mais dagger va nous aider! C'est en quelques sorte une usine de montage.

Pourquoi fabriquer une chose complexe quand on peut automatiser sa création, voir carrément récupéré juste la recette du produit? C'est le créneau de dagger.

Autre chose, ces objets complexe que l'on à créer, pourquoi ne pas les rendre génériques pour pouvoir s'en servir partout, les partager et les tester facilement?

En résumé, dagger nous aide a faire du code modulaire, plus générique, plus facilement testable et donc plus adaptable, rien que ça.

Explication des termes utilisés par cet outil

Une illustration possible de dagger est celle d'une fabrique de voiture.

dagger : c'est l'usine qui va fabriquer nos voiture.
module : les pièces disponibles dans l'usine
component : les produits fini créé par l'usine
scope : le status qu'un client doit avoir pour pouvoir acheter un produit

Comment le mettre en place et l'utiliser?

Alors là je ne vais pas réinventer la roue moi non plus, un très bon article à déjà était écrit pour ça par Florent Champigny sur le site tutos-android.com

les erreurs communes et leurs solutions

Erreur Caused by: java.lang.IllegalStateException: xxxxxModule must be set
Solution: à la suite de DaggerApplicationComponent.builder() ne pas oublié de déclarer le bon module, par exemple .applicationCommonModule(newApplicationCommonModule(this))

les liens utiles

Dagger2
http://www.tutos-android.com/tutoriel-dagger2
http://code.tutsplus.com/tutorials/dependency-injection-with-dagger-2-on-android--cms-23345
http://www.vogella.com/tutorials/Dagger/article.html

Dagger1
http://antonioleiva.com/dependency-injection-android-dagger-part-1/
http://antonioleiva.com/dagger-android-part-2/
http://antonioleiva.com/dagger-3/