Android Constructeur Injection


Exemple

Les classes sans dépendances peuvent facilement être créées par dagger.

public class Engine {

    @Inject // <-- Annotate your constructor.
    public Engine() {
    }
}

Cette classe peut être fournie par n'importe quel composant. Il n’a pas de dépendance et n’a pas de portée . Il n'y a pas d'autre code nécessaire.


Les dépendances sont déclarées comme paramètres dans le constructeur. Dagger appellera le constructeur et fournira les dépendances, tant que ces dépendances peuvent être fournies.

public class Car {

    private Engine engine;

    @Inject
    public Car(Engine engine) {
        this.engine = engine;
    }
}

Cette classe peut être fournie par chaque composant si ce composant peut également fournir toutes ses dépendances - Engine dans ce cas. Comme le Engine peut également être injecté par un constructeur, tout composant peut fournir une Car .

Vous pouvez utiliser l'injection de constructeur chaque fois que toutes les dépendances peuvent être fournies par le composant. Un composant peut fournir une dépendance, si

  • il peut le créer en utilisant l'injection de constructeur
  • un module du composant peut le fournir
  • il peut être fourni par le composant parent (s'il s'agit d'un @Subcomponent )
  • il peut utiliser un objet exposé par un composant dont il dépend (dépendances des composants)