如果我理解你的评论权限,我会建议你不需要包装器,而是一个通过GWT模块提供功能的库(请参阅here)。每个模块都可以使用GWTP和DI,但没有Ginjector。您宁愿在您配置模块依赖关系的地方提供杜松子酒模块。在您的应用程序中创建了注射器,您只需安装库的杜松子酒模块。
!!!别忘了:使用GWTP时,服务器端也有DI,功能完全相同。
客户端示例。考虑我们有两个让我们说的组成部分是一些页面的组合等P1和P2。然后创建两个带有模块配置的GWT模块,如P1.gwt.xml和P2.gwt.xml。每个这些模块都有一个GinModule,例如
public class P1GinModule extends AbstractGinModule {
@Override
protected void configure() {
// bind your presenters, views, etc..
}
}
在你的应用程序A1你,你安装你想要的模块,在这种情况下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 ...
}
注意:在你的appliations配置中,假设A1.gwt.xml,不要忘记继承两个GWT模块。
通过这种方法,您可以将所有依赖注入工作于不同的模块,这些模块在库中推出并通过GWT模块提供。
希望有帮助。
你的用例究竟是什么?你想能够自己运行这些独立的项目吗? –
对不起,我刚刚看过评论。 我的想法是创建多个模块M_1,...,M_n,每个模块包含一个注射器和一些页面。然后我想创建一个包含我的模块子集的包装项目。所以,如果我想从M_i中向/从应用程序中添加/删除功能,我只需要在包装中添加/删除M_i(加上像更改包装器投影仪继承的小改动)。 最初我遇到了依赖问题和ginjectors的结构问题,但后来我设法解决了这个问题,我将尽快发布ginjectors的结构。 – simo