我正在处理具有类型参数的注释。此类型参数用于实例化一个新对象。
使用 Google Guice,我会注入“注入器”本身并使用它来查找正确的实例。但是我对 Dagger 有点陌生,我没有看到网上描述的任何解决方案。我知道 ObjectGraph 可以给我一个实例。我/我可以注入 ObjectGraph 本身吗?我该怎么做?
我正在处理具有类型参数的注释。此类型参数用于实例化一个新对象。
使用 Google Guice,我会注入“注入器”本身并使用它来查找正确的实例。但是我对 Dagger 有点陌生,我没有看到网上描述的任何解决方案。我知道 ObjectGraph 可以给我一个实例。我/我可以注入 ObjectGraph 本身吗?我该怎么做?
我设法做到了这样。不知道好不好...
酒吧:
public class Bar {
private ObjectGraph objectGraph;
@Inject
Bar(ObjectGraph objectGraph){
this.objectGraph = objectGraph;
}
public ObjectGraph getObjectGraph() {
return objectGraph;
}
}
条形模块:
@Module(
injects = Bar.class,
complete = false
)
public class BarModule {
}
食品模块:
@Module(
includes = BarModule.class,
injects = ObjectGraph.class,
complete = true,
library = true
)
public class FooModule {
private ObjectGraph objectGraph;
public void setObjectGraph(ObjectGraph objectGraph){
this.objectGraph = objectGraph;
}
@Provides @Singleton ObjectGraph providesObjectGraph(){
return null;
}
}
入口点:
public class EntryPoint {
public static void main(String[] args){
FooModule fooModule = new FooModule();
ObjectGraph objectGraph = ObjectGraph.create(new BarModule(), fooModule);
fooModule.setObjectGraph(objectGraph);
System.out.println(objectGraph);
Bar bar = objectGraph.get(Bar.class);
ObjectGraph objectGraph1 = bar.getObjectGraph();
System.out.println(objectGraph);
}
}