热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我可以使用某种辅助的InjectwithDagger吗?

如何解决《我可以使用某种辅助的InjectwithDagger吗?》经验,为你挑选了1个好方法。

使用Google Guice或Gin我可以指定参数不受依赖注入框架控制:

class SomeEditor {


  @Inject
  public SomeEditor(SomeClassA a, @Assisted("stage") SomeClassB b) {
  }

}

辅助参数stageSomeEditor创建实例时指定.

SomeClassA的实例取自对象图,SomeClassB的实例在运行时从调用者获取.

在Dagger中有类似的方法吗?



1> Jeff Bowman ..:

因为工厂是一种独立的样板来进行优化(参见此处的邮件列表讨论),Dagger将其留给了一个姐妹项目AutoFactory.这提供了Guice通过FactoryModuleBuilder提供的" 辅助注入 "功能,但具有一些额外的好处:

您可以继续使用带有Guice或Dagger的AutoFactory或任何其他JSR-330依赖注入框架,这样即使您在它们之间切换,也可以继续使用AutoFactory.

因为AutoFactory生成代码,所以您不需要编写一个接口来表示构造函数:AutoFactory将编写一个全新的类型供您编译.(如果您愿意,也可以指定要实现的接口,或者如果您要从Guice迁移.)

因为所有类型检查都是在编译时发生的,所以它会产生普通的旧Java,它不会因为反射而变慢,并且适用于调试器和优化器.这使得Auto库对Android开发特别有用.

例如,来自AutoFactory自述,这将产生一拉SomeClassFactoryprovidedDepA@Inject-annotated构造函数和depB在一个create方法:

@AutoFactory
final class SomeClass {
  private final String providedDepA;
  private final String depB;

  SomeClass(@Provided @AQualifier String providedDepA, String depB) {
    this.providedDepA = providedDepA;
    this.depB = depB;
  }

  // …
}


推荐阅读
author-avatar
ET
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有