2011-09-06 36 views
6

我找到了Guice Overriding Binding in Guice的答案,但不知道如何對GWT中的GIN執行相同的操作。如何覆蓋GIN中的綁定

在此先感謝!

+0

爲什麼你要覆蓋一個GinModule? – Luismahou

+1

嗨,我想在單元測試中用模擬impl替換一些綁定。如果這被支持,我可以通過擴展模塊和覆蓋綁定來替換它們... –

回答

5

據我所知,它不被支持。

爲了回答您的評論:

如果你正在運行的「純」 JUnit測試(不GWTTestcases)你不使用GIN,您使用吉斯和吉斯中,你可以重寫模塊。如果要重新使用GIN模塊,請使用GinModuleAdapter進行包裝。所以你可以這樣做:

static class MyGinModule extends GinModule { 
    ... 
} 
static class MyGuiceModule extends AbstractModule { 
    ... 
} 

// And somewhere in your code, here's how you could create the Injector 
Module myWrappedGinModule = new GinModuleAdapter(new MyGinModule()); 
Module myModule = Modules.override(myWrappedGinModule).with(new MyGuiceModule()); 
Injector injector = Guice.createInjector(myModule); 
+0

+1在提到在junit測試中使用guice代替杜松子酒。 – Peter

0

在界面中使用@ImplementedBy註釋。

註解中指定的類將是默認實現。

您可以指定另一個實現,有效覆蓋默認設置。

例如:

@ImplementedBy(MyWidgetImpl.class) 
public interface MyWidget { 
    //... 
} 

public class MyWidgetImpl implements MyWidget { 
    //... 
}