Dagger 2 Component.Builder

时间:2017-03-04 23:56:39

标签: java dependency-injection dagger-2

我一直想知道在@Component.Builder内创建自己的Components而不是使用默认值有什么好处? 文档没有对它们说太多,也没有找到任何合理的例子。任何人都可以分享一些想法吗?

1 个答案:

答案 0 :(得分:5)

一些优点:

  • 正如Jeremy在评论中指出的那样,如果你想使用@BindsInstance,你需要一个明确的界面。
  • 显式接口允许您任意命名Module方法,或者将每个方法的Javadoc添加到构建器方法中。如果您的Module实例是可选的或者需要手动创建它们,这可能会特别方便。
  • 有些IDE和工具不能很好地处理代码生成的接口。显式构建器允许您定义自己的工具可读接口,让Dagger稍后生成实现。
  • 显式界面可以更容易在单元测试中模拟组件构建器。对于子组件构建器来说,这可能特别方便,它们遵循与组件构建器相同的规则。