Mein Team hat Dagger für die Abhängigkeitsinjektion in unserer Android App eingeführt und ich muss sagen, dass wir es bisher lieben. Wir möchten jedoch sicherstellen, dass wir es effizient nutzen. Ich habe mich gefragt, ob irgendjemand erklären kann oder ob es irgendwelche Unterlagen gibt, die die Fälle erklären, in denen Dagger auf die Reflexion von Abhängigkeiten zurückgreift?Gibt es eine Dokumentation darüber, wann Dagger beim Einspeisen von Abhängigkeiten auf Reflexion zurückgreift?
Antwort
Daggers Fallback-Logik ist in die FailoverLoader-Klasse eingebettet. Früher wurde ein Failover durchgeführt, wenn ein ModuleAdapter für ein bestimmtes Modul nicht geladen werden konnte. Die neuesten Releases werden jedoch mit einem Fehler fehlschlagen, wenn sie keinen ModuleAdapter laden können.
Zurzeit wird Dagger fehlschlagen, wenn es keine InjectAdapter-Klasse für einen bestimmten Typ findet, der injiziert werden muss. Der häufigste Fall ist, wenn Sie einen abstrakten Elternteil eines injizierbaren Typs haben, der keine @Inject-Felder enthält. In diesem Fall wird kein InjectAdapter dafür erstellt, und wenn der konkrete injizierbare Typ geladen wird, wird versucht, einen Adapter für das übergeordnete Element zu suchen, kann keinen finden und es wird eine reflektive Standardanmeldung erstellt.
Wenn man Code-Generierung nicht für Klassen ausführt, die mit @Inject-Feldern oder -Konstruktoren versehen sind, greift Dagger ebenfalls auf die Reflexion zurück. Es ist wirklich die gleiche Logik wie beim obigen Vererbungsfall, nur dass die Vererbung der einzige Fall ist, der nicht von einem Fehler beim Ausführen der Codegenerierung herrührt.
Nebenbei erzeugt der Google-Fork unter http://github.com/google/dagger derzeit Adapter, die ihre übergeordneten Typen verarbeiten, ohne einen Adapter für den übergeordneten (fest codierten übergeordneten Adapter) nachzuschlagen, so dass dieses Failover nicht in Google Fork auftritt. Wir haben den Google-Fork nicht in Maven veröffentlicht, da er bis vor kurzem fast identisch war. Wenn jedoch die Failover-Logik in übergeordneten Klassen ein Problem darstellt, möchten Sie möglicherweise ein Problem einreichen und nach einem Release fragen.
- 1. Gibt es Dokumentation darüber, wie Minix 3.2 (neuestes) bootet?
- 2. Dagger 2 Multi-Prozess-Abhängigkeiten
- 3. Gibt es eine Predis-Dokumentation?
- 4. DNN MVC Template - Gibt es eine gute Dokumentation darüber, wie man Module entwickelt?
- 5. Gibt es eine Android XML-Dokumentation?
- 6. Gibt es eine Spring Retry-Dokumentation?
- 7. Gibt es eine Android-Browser-Referenz/Dokumentation?
- 8. Gibt es eine definitive Dokumentation zum Schreiben von Software-Installern?
- 9. Gibt es irgendwo eine Dokumentation für den OnGuard von Turbopower?
- 10. Gibt es eine vollständige Dokumentation von Selenium Webdriver für NodeJS?
- 11. Gibt es eine gute Dokumentation zum PDF-Parsing in Swift?
- 12. Gibt es Dokumentation/eine API für das PBix-Dateiformat?
- 13. Gibt es eine LINQ-Alternative für Schleifen in Reflexion?
- 14. Gibt es Dokumentation für Thinlet 0.75?
- 15. Neustart auf Dagger 2 eine Abhängigkeit von Retrofits 2
- 16. CSS-Sass: Gibt es eine Möglichkeit, eine Gruppe von Elementen auszuwählen und darüber zu iterieren?
- 17. Android Dagger 2 fragt nach @Provides, während es sie gibt
- 18. Traceback auf Dagger .plus() auf unvollständige Mutter
- 19. HttpServletRequest.getSession (false): Wann gibt es null zurück?
- 20. Gibt es eine Dokumentation zum pywin32 odbc-Connector?
- 21. Gibt es eine Möglichkeit, Dev-Abhängigkeiten mit Composer zu deinstallieren?
- 22. Gibt es eine Möglichkeit, Flags für Cabal-Abhängigkeiten zu definieren?
- 23. Gibt es einen Standard zur Dokumentation von GET/POST-Parametern?
- 24. Gibt es weitere Dokumentation zu FilePrintSetup von WordBasic?
- 25. Gibt es eine Möglichkeit, Pip-Abhängigkeiten/Anforderungen aufzulisten?
- 26. Gibt es Dokumentation zur Implementierung des Server-Teils von Socket.IO?
- 27. Fehler beim Hinzufügen von Abhängigkeiten
- 28. Zugreifen auf eine Sammlung durch Reflexion
- 29. Erweitern des Mono C# -Compilers: Gibt es Dokumentation oder Präzedenzfälle?
- 30. Wann gibt getGraphics() eine gültige Grafikinstanz zurück?