Il mio team ha adottato Dagger per l'iniezione delle dipendenze all'interno della nostra app per Android e devo dire che ci piace fino ad ora. Tuttavia, vogliamo assicurarci che lo stiamo usando in modo efficiente. Mi stavo chiedendo se qualcuno può spiegare o se c'è qualche documentazione che spiega i casi in cui Dagger ricade nella riflessione per l'iniezione di dipendenze?C'è documentazione su quando Dagger torna a riflettere durante l'iniezione di dipendenze?
risposta
La logica di fallback di Dagger è incorporata nella sua classe FailoverLoader. Utilizzava il failover quando non poteva caricare un ModuleAdapter per un dato modulo, ma le versioni più recenti falliscono con un errore se non riesce a caricare un ModuleAdapter.
Attualmente, Dagger eseguirà il failover se non è in grado di trovare una classe InjectAdapter per un determinato tipo che deve essere iniettato. Il caso più comune è quando si ha un genitore astratto di un tipo iniettabile, che non ha campi @Inject. In questo caso, non è stato creato alcun InjectAdapter per questo, e quindi quando viene caricato il tipo concreto iniettabile, prova a cercare un adattatore per il genitore, non riesce a trovarne uno e viene creato un supporto riflettente.
Analogamente, se non si esegue la generazione del codice rispetto alle classi che sono decorate con campi o costruttori @Inject, Dagger tornerà a riflettere anche per quelle. È davvero la stessa logica con il caso ereditario sopra, è solo che l'ereditarietà è l'unico caso che non deriva da un fallimento nell'esecuzione della generazione del codice.
Come da parte, il fork di Google allo http://github.com/google/dagger attualmente genera adattatori che gestiscono i loro tipi principali senza cercare un adattatore per i genitori (adattatori genitore codificato hard), quindi questo failover non si verifica nel fork di Google. Non abbiamo rilasciato il fork di Google a Maven, poiché è stato quasi identico fino a poco tempo fa, ma se la logica di failover nelle classi parent è un problema, potresti voler presentare un problema e chiedere una versione.
- 1. Dagger Dipendenze da 2 componenti
- 2. Quando usare Dagger nell'applicazione Android?
- 3. Riflettere su un ExpandoObject
- 4. Utilizzo di Dagger per l'iniezione delle dipendenze sui costruttori
- 5. Creazione di dipendenze di test quando si utilizza Dagger2
- 6. Come impedire a `rust doc` di aggiungere dipendenze alla documentazione?
- 7. Dagger sui costruttori predefiniti
- 8. Dagger 2 sottocomponenti contro le dipendenze dei componenti
- 9. Dagger supporta l'integrazione delle dipendenze per i test ActivityInstrumentationTestCase2
- 10. Uso di Kotlin con Dagger
- 11. Riflettere l'ordine Type.Field()
- 12. SMJobBless - documentazione su quando richiede la password dell'amministratore
- 13. Mysql Torna a mezzanotte solo
- 14. Dagger 2 Salva e ripristina stato quando l'attività si arresta
- 15. Come liberarsi di Dagger 2 warning "Generazione di un MembersInjector"
- 16. statusBarFrame.height torna 1.024,0 quando in Landscape (iPad)
- 17. traceback su Dagger .Più() all'elemento principale incompleto
- 18. Test funzionali Android con Dagger
- 19. Torna a un'interfaccia più specializzata
- 20. Come scrivere la documentazione durante la programmazione
- 21. Documentazione Javascript su getParameterByName?
- 22. HTML5 History API: JSON visualizzato quando si "torna" a un'altra pagina, quindi "inoltrare" di nuovo
- 23. Informazioni su Play 2.4 Iniezione delle dipendenze
- 24. Override Dagger Module in Robolectric Test
- 25. L'opzione "Evita i framework di dipendenza delle dipendenze" nella Guida alla memoria di Android si applica anche a Dagger?
- 26. Build fallito su run-android a causa di dipendenze
- 27. Lion OS - torna aggiornamento birra "Errore durante l'esecuzione ..."
- 28. Iniezione presentatore con Dagger 2
- 29. Riflettere una versione precedente di System.dll
- 30. VerifyError nell'app multidex quando si inietta la dipendenza con Dagger