如果我正确理解您的评论,我建议您不需要包装器,而是需要一个通过 GWT 模块提供功能的库(请参阅此处)。这个模块中的每一个都可以使用 GWTP 和 DI,但没有 Ginjector。您宁愿提供 gin 模块来配置模块依赖项。在创建 ginjector 的应用程序中,您只需安装库的 gin 模块。
!!!不要忘记:使用 GWTP 时,服务器端也有 DI,其功能完全相同。
客户端的示例。考虑我们有两个假设组件,它们是某些页面等的复合物。P1 和 P2。然后使用 P1.gwt.xml 和 P2.gwt.xml 等模块配置创建两个 GWT 模块。这些模块中的每一个都有一个 GinModule 例如
public class P1GinModule extends AbstractGinModule {
@Override
protected void configure() {
// bind your presenters, views, etc..
}
}
在您的应用程序 A1 中创建您的 gin 配置,在其中安装所需的模块,在本例中为 P1GinModule 和 P2GinModule
public class A1GinModule extends AbstractGinModule {
@Override
protected void configure() {
install(new P1GinModule());
install(new P2GinModule());
}
}
您的 ginjector 应该如下所示:
@GinModules(A1GinModule.class)
public interface AppInjector extends Ginjector {
// what ever you need ...
}
注意:在你的应用程序配置中,比如说 A1.gwt.xml,不要忘记继承两个 GWT 模块。
使用这种方法,您可以将所有依赖注入工作用于在库中推出并通过 GWT 模块提供的不同模块。
希望有帮助。