GWT项目结构

时间:2011-05-17 04:23:28

标签: spring gwt directory-structure

目前在我们的项目中,我们有下面提到的结构。我们的项目主要使用GWT& Spring框架。

  1. com.customername.projectname.client.module name
  2. com.customername.projectname.client.rpc.module name
  3. com.customername.projectname.shared.validator.module name
  4. com.customername.projectname.server.module name
  5. com.customername.projectname.spring.dao.module name
  6. com.customername.projectname.spring.service.module name
  7. 我们的application.gwt.xml包含以下需要转换为java脚本的源条目。

    source path='client'
    source path='shared'
    

    由于我们在服务器端使用spring,我们使用spring注释来标记服务和DAO,然后在applicationContext.xml我们使用下面的配置来扫描DAO和服务层。

    <context:annotation-config/>    
    <context:component-scan base-package>
    

    现在我们的客户想要使用下面提到的结构。按模块分组所有内容。同样在我们的案例中,模块不是GWT模块。就像差异一样。部分应用程序。

    1. com.customername.projectname.modulename.client
    2. com.customername.projectname.modulename.rpc
    3. com.customername.projectname.Modulename.validator
    4. com.customername.projectname.Modulename.server
    5. com.customername.projectname.Modulename.spring.dao
    6. com.customername.projectname.Modulename.spring.Service
    7. 我的问题是:

      1. 考虑到它的应用非常大,是推荐上层方法吗?
      2. 如果要实现上述方法,如何设置需要由gwt编译器从java转换为java脚本的包/源文件。我应该在application.gwt.xml中提到每个模块名吗?

3 个答案:

答案 0 :(得分:0)

要回答第二个问题,每个模块应该有一个.gwt.xml文件,指出该模块中的客户端(和共享)目录。对于使用其他GWT模块的GWT模块,您应该使用.gwt.xml文件中的“inherit”来引用它们。

本页很好地描述了其中的一些概念: http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html

答案 1 :(得分:0)

问题1) 如果它对您和其他开发人员有意义,那么它听起来像是一个相当不错的项目结构。 (摘自Here

  

你应该捆绑这些类和   一个包中的接口为几个   原因,包括以下内容:

     
      
  • 您和其他程序员可以轻松确定这些类型   相关。
  •   
  • 您和其他程序员知道在哪里可以找到可以提供的类型   与图形相关的功能。
  •   
  • 您的类型名称不会与其他类型的名称冲突   包因为包创建了一个   新命名空间。
  •   
  • 您可以允许包中的类型具有不受限制的访问权限   彼此仍然限制访问   对于包装外的类型。
  •   

问题2) 我要澄清一下,关于:

  

我应该在application.gwt.xml中提及每个模块名吗?

你的意思是包裹吗?

...

    <entry-point class='com.customername.projectname.AppEntryPoint'/>

    <source path="modulename.client"/>
    <source path="modulename.anotherpackage"/>

</module>

如果要由GWT编译器编译任何子包,则应在.gwt.xml中引用任何包(从.gwt.xml所在的包开始)。引用的包将自动由GWT编译器编译。

不确定您的问题是关于Spring配置的。

希望能帮助。

答案 2 :(得分:0)

问题1)我同意edwardTheGreat,你的初始包装结构听起来非常合理。您只需要在gwt.xml文件中列出客户端和共享包(需要编译成javascript的包)。

问题2)如果你确实改变了包结构,就像你提到的那样,你必须在gwt.xml文件中列出每个模块的客户端和共享目录。正如Daniel所说,您可以将每个模块分解为它自己的“GWT模块”,然后继承每个应用程序模块中所需的GWT模块。

要实现这一点,您必须使每个继承的GWT模块的源可用于继承模块。无论你是通过Maven,Ant等来做到这一点都没关系。但顶级GWT模块必须具有对所有继承的GWT模块的源的编译时访问权限。例如:

<module rename-to='A'>
  <inherits name='org.example.B' />
  ... other inherits, entry-point, etc. ...
  <source path='client' />
  <source path='shared' />
</module>

通过这种结构,模块“A”必须能够访问模块“B”的源。模块'B'可以像通常的GWT模块一样构建,但是在编译时,模块'A'必须在类路径上有B的源。