I managed to do it like this. Not sure if it is good...
Bar:
public class Bar {
private ObjectGraph objectGraph;
@Inject
Bar(ObjectGraph objectGraph){
this.objectGraph = objectGraph;
}
public ObjectGraph getObjectGraph() {
return objectGraph;
}
}
BarModule:
@Module(
injects = Bar.class,
complete = false
)
public class BarModule {
}
FooModule:
@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;
}
}
EntryPoint:
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);
}
}