4

Dagger 和 Dagger 2.0 有什么区别,为什么 Google 决定分叉现有项目?

4

3 回答 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 回答