Dagger 2 Component.Builder

use*_*889 5 java dependency-injection dagger-2

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

Jef*_*ica 6

一些优点:

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