[英]Runtime value injection in Dagger vs. Guice
我正在将一个项目从 Guice 迁移到 Dagger,并且我试图了解如何在运行时注入值。 假设我有一个带有以下配置方法的 Guice 模块:
void configure() {
install(new FactoryModuleBuilder()
.build(InterfaceXFactory.class));
}
工厂界面,
public interface InterfaceXFactory{
ClassX getClassX(
@Assisted("a") String a,
@Assisted("b") Integer b);
}
最后:
ClassX(
final @Assisted("a") String a,
final @Assisted("b") Integer b) {
/.../
}
这种配置的匕首等价物是什么? 根据我的发现,我可以使用 AutoFactory,但我对 API 的理解不够好,而且我不知道在 Dagger 中会是什么样子。 也许这也不是最好的方法。
这个示例将如何转换为 Dagger,以便我可以获得与 Guice 实现相同的功能? 我真的很感激帮助!
Dagger 在 2.31 版本中添加了自己的辅助注入,所以没有太大的改变。
工厂接口需要用@AssistedFactory
注解:
@AssistedFactory
public interface InterfaceXFactory{
ClassX getClassX(
@Assisted("a") String a,
@Assisted("b") Integer b);
}
构造函数需要用@AssistedInject
注释:
@AssistedInject
ClassX(
final @Assisted("a") String a,
final @Assisted("b") Integer b) {
/*...*/
}
无需向模块添加任何内容; Dagger 会自行找到InterfaceXFactory
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.