Dagger和Dagger 2.0有什么区别?

时间:2015-01-11 15:12:04

标签: dagger dagger-2

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

3 个答案:

答案 0 :(得分:6)

来自Dagger 2 presentation

的一些引用

匕首1的问题:

  • 丑陋的生成代码
  • 运行时图表合成
  • 效率低下的图表创建
  • 部分可追溯性
  • 类似地图的API

Dagger 2解决方案:

  • 整个图表的编译时验证
  • 调试简单;完全具体的调用堆栈用于提供 创建
  • 完全可追溯
  • POJO API
  • 性能

Dagger 2问题:

  • 不太灵活
  • 没有活力
  • Guice没有自动迁移路径

答案 1 :(得分:0)

匕首1.0

  • 一些反射API用于代码生成。
  • 反射很慢。
  • 在编译时未捕获异常。

匕首2.0

  • 在构建时使用注释处理器生成代码。
  • 注释处理器速度很快。
  • 仅在编译时捕获异常。

答案 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

的迁移指南