Dagger 和 Dagger 2.0 有什么区别?
What is the difference between Dagger and Dagger 2.0?
Dagger 和 Dagger 2.0 有什么区别,为什么 Google 决定 fork 现有项目?
中的一些引述
匕首 1 的问题:
- 生成的代码难看
- 运行时图组成
- 图表创建效率低下
- 部分可追溯性
- 类似地图API
匕首2解决方案:
- 整个图
的编译时验证
- 调试方便;提供 和 的完全具体的调用堆栈
创作
- 完全可追溯
- POJO API
- 性能
匕首 2 问题:
- 不太灵活
- 没有活力
- 没有来自 Guice 的自动迁移路径
匕首 1.0
- 一些反射 API 用于代码生成。
- 反射很慢。
- 编译时不捕获异常。
匕首 2.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
Dagger 和 Dagger 2.0 有什么区别,为什么 Google 决定 fork 现有项目?
匕首 1 的问题:
- 生成的代码难看
- 运行时图组成
- 图表创建效率低下
- 部分可追溯性
- 类似地图API
匕首2解决方案:
- 整个图 的编译时验证
- 调试方便;提供 和 的完全具体的调用堆栈 创作
- 完全可追溯
- POJO API
- 性能
匕首 2 问题:
- 不太灵活
- 没有活力
- 没有来自 Guice 的自动迁移路径
匕首 1.0
- 一些反射 API 用于代码生成。
- 反射很慢。
- 编译时不捕获异常。
匕首 2.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