我目前正在开发一个正在增长的GWTP应用程序,所以我想开发它,以便将来可以决定将其拆分为两个或多个部分。
考虑一下,我正在处理一个项目p,该项目在概念上可以分为两个项目P1和P2,来自两个不同团队的人员正在处理这两个项目。然后,P1和P2将共享共同的东西,例如标准演示者类的扩展、共同的演示者和视图、配置等等。我想创建一个应用程序,它是P1、P2和一个共同项目Px的总和,它将是其他两个项目和GWTP项目的依赖项。
我不知道是否可以做到这一点,但我认为主要的问题是我需要三个Gijector,一个通用的Gijector和两个扩展,每个项目一个。
有这样的例子吗?或者我应该尝试不同的方法?
如果我理解您的评论,我建议您不需要包装器,而需要通过GWT模块提供功能的库(请参阅此处)。每个模块都可以使用GWTP和DI,但没有Gijector。您更愿意在配置模块依赖关系的地方提供gin模块。在创建ginjector的应用程序中,只需安装库的gin模块即可。
别忘了:当使用GWTP时,服务器端也有DI,其功能完全相同。
客户端示例。假设我们有两个组件,比如说,它们是一些页面等的组合。P1和P2。然后用P1.GWT.xml和P2.GWT.xml等模块配置创建两个GWT模块
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());
}
}
你的目标应该是这样的:
@GinModules(A1GinModule.class)
public interface AppInjector extends Ginjector {
// what ever you need ...
}
注意:在应用程序配置中,比如说A1.gwt.xml,不要忘记继承这两个gwt模块。
有了这种方法,所有的依赖项注入都可以用于不同的模块,这些模块在库中推出并通过GWT模块提供。
希望能有所帮助。