如何在覆盖中重新启用默认绑定

How to re-enable the default binding in an override

我有一个 TestModule 可以为我的单元测试做一些绑定,例如它用存根替换外部系统的访问器 类:

bind(ExternalSystemAccessor.class).to(ExternalSystemAccessorStub.class).in(Singleton.class);

现在我的一个测试需要使用高效的实现,所以我尝试通过覆盖将其绑定回默认值:

injector = Guice.createInjector(Modules.override(new TestModule()).with(new AbstractModule() {
    @Override
    protected void configure() {
        bind(ExternalSystemAccessor.class).to(ExternalSystemAccessor.class);
    }
}));

但是,这会导致 Guice 错误:

com.google.inject.CreationException: Guice creation errors:

1) Binding points to itself.

那么如何通过覆盖恢复到默认绑定?

刚刚在输入问题时找到了答案。解决方法是省略to方法:

@Override
protected void configure() {
    bind(ExternalSystemAccessor.class); // re-enable default binding
}