GWT涂鸦(3)——Spring Roo Project
The module XML file位置:src/main/java/包/applicationScaffold.gwt.xml
由于Roo的项目必须是maven构建的,所以有固定的src目录结构;名字也是自动生成的(@question希望在使用Roo命令时可以修改);
内容:模块:applicationScaffold
继承User
继承Standard theme
继承Activity
继承Place
继承Inject:gwt的依赖注入模块,项目名字叫Gin,是基于Guice的
继承RequestFactory:可以理解为客户端entity管理
继承CellView
继承Text
继承Logging
entry-point:**.client.scaffold.Scaffold
源client
源shared
公共public
?
下面配置表示对InjectorWrapper的注入会根据客户端不同而采用Desktop或者Mobile的InjectorWapper
?
?The Host Page位置:src\main\webapp\ApplicationScaffold.html内容:meta tag
css: 没有指定css
js: applicationScaffold/applicationScaffold.nocache.jsspan: 显示loading...
?
?
?
?
The Entry Point Class位置:src/包.client.scaffold.Scaffold内容:实现EntryPoint.onModuleLoad():通过DesktopInjectorWrapper得到DesktopInjector得到ScaffoldDesktopApp对象并调用该对象的run方法。
?
?
The Main App Class位置:src/包.client.scaffold.ScaffoldDesktopApp(ScaffoldMobileApp)内容:通过正常Inject注入的属性包括ScaffoldDesktopShell shell,placeHistoryFactory,applicationMasterActivities,applicationDetailsActivities。通过BindingModule注入的属性包括eventBus,ApplicationRequestFactory requestFactory,placeController;由于这些类需要通过GWT来create,所以需要用到BindingModule设置。定义run方法作为整个app的入口。
?
The Request Factory
位置:src/包.client.managed.request内容:RequestFactory<|--ApplicationRequestFactory接口:Request的工厂,每个Entity都应该有对应的Request创建方法在这个工厂里,同时它还包括了UserInformationRequest(User模块),LoggingRequest(Logging模块);。RequestContext<|--*Request接口:定义所有在客户端可以访问的entity*的crud+finding类方法。EntityProxy<|--*Proxy接口:对entity*在客户端的代理,类似DTO。ApplicationEntityTypesProcessor<T> @TODO。
?
The IoC (Gin)
位置:src../包.client.scaffold.ioc内容:InjectWapper接口(包含2个实现类 DesktopInjectorWrapper / MobileInjectorWrapper):Inject类的工厂;ScaffoldInjector接口,继承自Ginjector(包含2个子接口DesktopInjector/MobileInjector):Inject类,使用指定的Binding Module类来生成依赖注入后的对象,由于客户端无法使用Guice的Inject的getInstance方法,所以在Gin中要定义Inject接口,并通过@GinModules定义具体的Binding Module;ScaffoldModule类,继承自AbstractGinModule:Binding Module类,通过config函数定义依赖关系。
?