Dagger 和 Dagger 2.0 有什么区别,为什么 Google 决定分叉现有项目?
问问题
2514 次
3 回答
6
Dagger 2 演示中的一些引述
Dagger 1 的问题:
- 丑陋的生成代码
- 运行时图组合
- 低效的图创建
- 部分可追溯性
- 类似地图的 API
匕首2解决方案:
- 整个图的编译时验证
- 调试方便;用于提供和 创建的完全具体的调用堆栈
- 完全可追溯
- POJO API
- 表现
匕首2问题:
- 不太灵活
- 没有活力
- Guice 没有自动迁移路径
于 2015-01-11T21:19:41.650 回答
0
匕首 1.0
- 一些反射 API 用于代码生成。
- 反射很慢。
- 编译时不会捕获异常。
匕首 2.0
- 在构建时使用注释处理器生成代码。
- 注释处理器很快。
- 仅在编译时捕获异常。
于 2020-03-16T19:17:39.957 回答
0
Dagger1.x:它是由 Square 创建的运行时依赖注入框架。这是基于反射的解决方案,在运行时连接依赖项。现在它已被弃用,取而代之的是 Google 的 Dagger2。
有用的链接:
https ://github.com/square/dagger
https://square.github.io/dagger/
一些缺点是:
- 使用慢反射 API,在 Android 中甚至更慢
- 性能开销
- 可追溯性和运行时图组合较少
Dagger2.x:它是 Square 创建的早期版本的改编版本,现在由 Google 维护。Dagger2 是编译时依赖注入框架,它在编译时生成代码以连接依赖项。
Dagger2的优点:
- 不再有反射 API
- 更好地生成手写代码,因此更具可追溯性。
- 性能比 Dagger1 快近 10 倍。
- 需要更少的模块配置
Dagger2 的一些有用链接:
https ://github.com/google/dagger
https://dagger.dev/
如果您仍在使用 dagger1,这里是从 dagger1 到 dagger2 的迁移指南https://dagger.dev/dev-guide/dagger-1-migration.html
于 2020-10-21T06:21:01.007 回答