到目前为止,我发现(只)2:
与此同时,我发现了一个很大的缺点:你不能在Dagger 2中使用模块覆盖(@Module(overrides = true)
),这至少对我来说很烦人 - 它对单元测试非常有用。
还有其他优点/缺点吗?
答案 0 :(得分:18)
https://blog.gouline.net/2015/05/04/dagger-2-even-sharper-less-square/和http://google.github.io/dagger/dagger-1-migration.html带来的一些优点和缺点:
Dagger 2的优点:
@Singleton
。缺点:
inject()
方法现在与注射目标具有强类型关联。这对调试很有用,但它使从基类注入的常见做法变得复杂(例如基本活动,片段等)。overrides
。覆盖简单测试假货的模块可以创建模块的子类来模拟该行为。应该分解使用覆盖并依赖依赖注入的模块,以便将覆盖模块表示为两个模块之间的选择。编辑2016/11/16:这不是技术优势,但Dagger 1现已弃用(截至2016年9月15日),不再积极开发。他们建议迁移到Dagger 2。
答案 1 :(得分:2)
我不建议您查看toothpick。
作为合着者,我显然有偏见,但是这个使用起来要简单得多,至少在大多数情况下都比匕首快。实际上,范围树是开发更多高级功能的非常强大的方法,例如在多个活动范围内回收实例。