2015-11-29 22 views
12

Ho davvero difficoltà a capire il sistema di iniezione Dagger 2 Dipendenza.Qualcuno può fornire una buona spiegazione di Dagger 2?

Ho compreso l'utilizzo dell'annotazione @Inject per comunicare a Dagger che è necessario fornire un'istanza di qualche tipo qui.

Ma, non capisco i vari ruoli degli altri componenti quali: @Module, @Component, @Provides e come lavorano insieme per fornire l'istanza appropriata per la dipendenza appropriata.

Qualcuno può spiegarlo in modo semplice e conciso?

risposta

10

@modulo: I moduli sono classi i cui metodi di fornire le dipendenze, quindi abbiamo definiscono una classe e annotare con @modulo, in tal modo, Dagger saprà dove trovare le dipendenze al fine di soddisfarli quando costruisce istanze di classe. Una caratteristica importante dei moduli è che sono stati progettati per essere partizionati e composti insieme (per l'istanza vedremo che nelle nostre app possiamo avere più moduli composti ).

@Component: Componenti fondamentalmente sono iniettori, diciamo un ponte tra @Inject e @modulo, che il suo compito principale è quello di mettere entrambi. Hanno appena ti danno le istanze di tutti i tipi che si definiti, per esempio, dobbiamo annotare un'interfaccia con @Component ed elencare tutte le @Modules che comporranno tale componente, e se qualcuno di loro manca, otteniamo errori in fase di compilazione. Tutti i componenti sono a conoscenza dell'ambito delle dipendenze fornite tramite i suoi moduli .

@Provide: moduli interni definiamo metodi che contengono questa annotazione che racconta Dagger come vogliamo costruire e fornire tali dipendenze menzionati.

vi consiglio di leggere questo:

Credo che aiuterà a capire.

Problemi correlati