私のチームは、Androidアプリ内で依存性注入用にDaggerを採用しています。しかし、我々はそれを効率的に使用していることを確認したい。誰かが説明できるかどうか、またはDaggerが依存関係を注入するためのリフレクションに落ちるケースを説明するドキュメンテーションがあるかどうか、私は疑問に思っていましたか?Daggerが依存関係を注入するときにリフレクションに落ちる時期に関するドキュメントはありますか?
5
A
答えて
9
ダガーのフォールバックロジックは、FailoverLoaderクラスに組み込まれています。特定のモジュールのModuleAdapterをロードできなかったときにフェイルオーバーしましたが、最新のリリースではModuleAdapterをロードできないとエラーが発生して失敗します。
現在、注入が必要な特定のタイプのInjectAdapterクラスが見つからない場合、Daggerはフェイルオーバーします。最も一般的なケースは、@Injectフィールドを持たない注入型の抽象親を持つ場合です。この場合、InjectAdapterは作成されていないので、コンクリート注入可能タイプがロードされると、親のためのアダプタを検索しようとします。見つけられず、反射スタンドインが作成されます。
同様に、@Injectフィールドまたはコンストラクタで装飾されたクラスに対してコード生成を実行しない場合、Daggerも同様にリフレクションにフォールバックします。上記の継承の場合と同じ論理ですが、継承はコード生成を実行できなかった唯一のケースです。
他にも、http://github.com/google/daggerのGoogleフォークは、親(ハードコードされた親アダプタ)のアダプタを検索せずに親タイプを処理するアダプタを生成します。したがって、このフェールオーバーはGoogleフォークでは発生しません。最近までほとんど同じだったので、私たちはmavenにgoogleフォークをリリースしていませんが、親クラスのフェイルオーバーロジックが問題であれば、問題を提出してリリースを求めることができます。
関連する問題
- 1. コントローラに依存関係を注入すると、スコープに依存関係が追加されますか?
- 2. サニタイズ依存関係を注入するときにエラー[$ injector:unpr]
- 3. コアデータオブジェクト注入(依存関係あり)ストーリーボード
- 4. groovyドメインに依存関係を注入できますか?
- 5. 依存性注入 - 各オブジェクトに注入する代わりに静的依存関係フィールドを使用する
- 6. 依存関係注入による循環依存関係の解決
- 7. JerseyTestに依存関係を注入する方法は?
- 8. Ninjectで依存関係注入をセットアップするには?
- 9. 注入依存関係はnullです
- 10. Dagger提供の依存関係に対するランタイムスワップの実装
- 11. WCFサービスに依存関係を注入する方法
- 12. Startup.csの外部に依存関係注入を実装する
- 13. ktorアプリケーションに依存関係を注入する方法
- 14. カスタムソーラリウム文書に依存関係を注入する
- 15. angularjs:コントローラに依存関係を注入する方法
- 16. 私たちが別のオブジェクトに渡す関数の中で注入された依存関係にアクセスする
- 17. 依存関係注入サービスにアクセスする角2のクラス・デコレータ
- 18. package.jsonにパッケージを入れる場所?依存関係または依存関係
- 19. 依存関係注入とASP.Netメンバーシッププロバイダ
- 20. Angular2.3カスタムライブラリと依存関係注入
- 21. Junitテストに依存関係を注入できません
- 22. ビューとモデルの間に依存関係はありますか?
- 23. Mockito、注入された依存関係に依存するオブジェクトのテスト(Spring)?
- 24. Anaconda Cloudパッケージには依存関係がありますか?
- 25. Ruby Gemspec依存関係:gitブランチ依存関係はありますか?
- 26. 依存関係を注入しようとするとエラーが発生する
- 27. 依存関係をシェードする必要がありますか?
- 28. アセンブリに応じてSimple Injectorと異なる依存関係を注入する
- 29. mvcで依存関係注入を実装する方法は?
- 30. ライブラリプロジェクトの依存関係注入を設定する方法は?