【问题标题】:What is the difference between Dagger and Dagger 2.0?Dagger 和 Dagger 2.0 有什么区别?
【发布时间】:2015-01-11 15:12:03
【问题描述】:

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

【问题讨论】:

    标签: dagger dagger-2


    【解决方案1】:

    来自Dagger 2 presentation的一些引用

    匕首1的问题:

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

    匕首 2 解决方案:

    • 整个图的编译时验证
    • 调试方便;提供的完全具体的调用堆栈 创作
    • 完全可追溯
    • POJO API
    • 性能

    匕首 2 问题:

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

    【讨论】:

      【解决方案2】:

      匕首 1.0

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

      匕首 2.0

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

      【讨论】:

        【解决方案3】:

        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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-12-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-08
          相关资源
          最近更新 更多