Hello! I need to override some bindings in a child injector. I can't
use Modules.overrides because I don't know about list of modules which
had been used during parent injector creating. For example:
public static void main(String[] args) {
Injector injector = Guice.createInjector(new AbstractModule()
{
@Override
protected void configure() {
bind(IContainer.class).to(ContainerImpl.class);
bind(IChild.class).to(ChildImpl.class);
}
});
IContainer container = injector.getInstance(IContainer.class);
container.createNewChild();
}
interface IChild {}
class ChildImpl implements IChild {
@Inject
ChildImpl(Container parentContainer) {
// parentContainer should pointed on container object which
had created this object! It should no be a new instance of
ContainerImpl class!
}
}
interface IContainer {
IChild createNewChild();
}
class ContainerImpl implements IContainer {
private final Injector injector;
@Inject
ContainerImpl(Injector injector) {
this.injector = injector;
}
public IChild createNewChild() {
Injector childInjector = injector.createChildInjector(new
AbstractModule() {
@Override
protected void configure() {
bind(IContainer.class).to(ContainerImpl.class); // Not
works!
}
});
return childInjector.getInstance(IChild.class);
}
}
--
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-guice?hl=en.