因为工厂是一种单独的样板,可以进行优化(请参阅此处的邮件列表讨论),所以Dagger将其留给了姊妹项目AutoFactory。这提供了Guice通过FactoryModuleBuilder提供的“
辅助注入
”功能,但具有一些额外的好处:
- 您可以继续将AutoFactory与Guice或Dagger或任何其他JSR-330依赖项注入框架一起使用,因此即使在它们之间进行切换,也可以继续使用AutoFactory。
- 因为AutoFactory会生成代码,所以您无需编写表示该构造函数的接口:AutoFactory将编写一个全新的类型供您进行编译。(如果愿意,或者从Guice迁移,也可以指定要实现的接口。)
- 因为所有类型检查都是在编译时进行的,所以它会生成普通的旧Java,它不会因反射而变慢,并且可以与调试器和优化器一起很好地工作。这使得Auto库对于Android开发特别有用。
例如,来自AutoFactory自述,这将产生一拉
SomeClassFactory带
providedDepA在
@Inject-annotated构造函数和
depB在一个
create方法:
@AutoFactoryfinal class SomeClass { private final String providedDepA; private final String depB; SomeClass(@Provided @AQualifier String providedDepA, String depB) { this.providedDepA = providedDepA; this.depB = depB; } // …}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)