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

时间:2015-08-14 13:44:43

标签: java guice

我有一个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.

那么如何通过覆盖返回默认绑定?

1 个答案:

答案 0 :(得分:0)

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

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