`
ybak
  • 浏览: 35464 次
  • 性别: Icon_minigender_1
  • 来自: XX
社区版块
存档分类
最新评论

项目中使用Spring Roo的经验总结

 
阅读更多

    自从尝试了Roo的一分钟搭建网页Demo后,我就迷恋于驯服Roo. Roo的使用帮我节省了一部分时间,但同时也带来不少烦恼.
    我在最近两年的四个项目中使用了Spring 的Roo.这四个项目包括:两个后台管理网页,一个社交游戏游戏服务器,一个手机购物系统.


    我主要使用Roo来做两件事:
    1.快速搭建服务器框架
      快速搭建框架主要是使用Roo的Shell生成:
      1.SSH的框架.
      2.构建Domain的CRUD代码(ActiveRecord模式)
    2.自动生成Domain的管理页面
      通过Shell能根据之前已定义的Domain相关的CRUD操作,来生成Domain的管理页面.

 

     项目开发的流程基本:

      1.理解需求

      2.定义Domain的类图,

      3.根据类图,在Roo Shell的生成Domain和页面.

      4. 在现有的代码上做扩展.

 

   通过四个项目的使用,我总结了Roo的以下优缺点:

 

    优点:
       前期开发速度快
       Roo最大的卖点就是自动化.这也是我使用Roo的主要原因.以上两点都是通过简单的命令行方式来建立Domain.并在建立的同时自动生成代码.在需求明确后的项目的前期.可以快速生成可以运行的简单界面来作为演示.


    缺点:

    1.后期维护成本高.
      这里的维护成本表现在五个方面:
       1.Roo默认采用ActiveRecord模式,便于代码的自动生成.我们可以在前期的Controller中直接对Domain进行save或者update. 但ActiveRecord模式的弊端是,当业务需求变的越来越复杂时,Domain中的方法越来越多,Domain越来越臃肿,我们不得重新建立Service层甚至Dao层,将业务从Domain中剥离.当我们拥有几十个,甚至上百个这样的Domain时,这时候再进行相应的重构.难度将非常大(我最后尝试成功了.但确很艰辛).
       2.Roo生成的页面可扩展性很差.Roo在前端页面中使用了目前已不是主流的dojo进行动态效果展示.并通过Roo自己的Tag来生成相应的表单页面.Roo使用Tile来管理页面布局.强制页面支持国际化,使用Roo的Tag必须编辑相应的properties文件.
       3.Roo生成大量aspectJ文件在IDE中的自动构建中所消耗的时间会让人抓狂.尤其是当项目中有上百个domain的时候.这样会经常中断程序员写代码的思路. 这时候最明智的办法是关闭自动构建.
       4.很难多人协作,更新Domain后,roo会自动更新对应的jsp页面,会轻易的将页面更新的面目全非.
       5.Roo对中文支持不好.当代码中出现中文时,可能有很高的机率导致roo shell的崩溃.作为一个使用者,我把bug提交给roo的维护者,希望他能解决时,得到答复却是Roo没有支持中文的计划.

 

     2.性能低下
       1.当多个Domain的引用关系比较复杂时, 使用Roo默认建模的方式.Roo将会为其生成JPA的一对多,多对多等关系.这样生成页面前获取Domain的数据,都会尝试填充关联Domain的关系数据,对数据库进行N+1操作.由于自动生成页面的原因.必须对页面改造后.才能使用lazy模式.
       2.Roo使用JPA来进行ORM映射, 当系统对Java对象实例的唯一性比较敏感时,可能会遇到性能问题.JPA的实现Hibernate由于设计的原因.通过Key获取Domain时,每次都会生成一个新的对象.即使使用了二级缓存,也解决不了这个问题.

     通过以上总结.我个人建议,当你的项目满足以下情况才应该考虑适用Roo:
        1.微型项目,当domain不超过10个时.
        2.项目中的前期Demo(Demo完尽早剥离Roo)
        3.想给别人炫耀如何一分钟搭建网站时.

      PS, 我之前四个使用过Roo的项目,除了一个简单的后台管理系统没有变化外,其余项目都已通过改造将Roo剥离了出来(过程很痛苦).

 

分享到:
评论

相关推荐

    spring roo使用文档

    - **轻松移除**:即使后期决定不再使用 Spring Roo,也可以很容易地将其从项目中移除。 #### 三、安装与配置 - **安装步骤**:确保已安装 Java SE 和 Maven,并且配置好环境变量。 - **可选配置**:可以通过设置 `...

    Spring Roo In Action

    这部分内容可能通过实例演示了如何将这些高级特性集成到使用Spring Roo开发的项目中。 由于提供的部分内容是一段文字,我们可以推测书中有对Spring Roo的介绍,也可能包含了关于书籍的购买信息、出版社的版权声明,...

    spring roo in action

    书中还涉及了Web开发部分,探讨了如何使用Spring Roo快速搭建Web应用程序,包括使用Spring MVC进行控制器和视图层的快速开发。Spring Roo的Web开发支持包括了多种Web层技术,方便开发者根据项目需求选择合适的技术...

    Spring ROO

    例如,你可以使用ROO命令来创建一个新的Spring项目,包括Maven或Gradle构建文件、基本的项目结构以及必要的依赖。ROO还可以自动生成领域模型类、数据访问对象(DAO)、服务层接口和实现,甚至包括JPA实体的元数据。...

    Spring Roo 简介,第 4 部分: 用 Spring Roo 和 Cloud Foundry 在云中快速开发应用程序

    总结来说,Spring Roo 为 Java 开发者提供了一个高效开发工具,而 Cloud Foundry 则是一个强大的云平台,两者结合使用可以加速应用程序的开发和部署流程,尤其适合敏捷开发和DevOps实践。通过学习和实践,开发者可以...

    Spring Roo命令文档

    总结,Spring Roo通过其丰富的命令集极大地提高了开发效率,减少了重复工作。通过理解和熟练使用这些命令,开发者可以快速构建符合最佳实践的Spring应用。`RooCommandInfo.txt`文件可能包含了所有可用的Roo命令及其...

    spring roo 1.1.3 学习资料

    Spring Roo是Spring框架家族中的一个创新工具,旨在简化Java应用程序的开发过程,特别是企业级应用。它基于Spring的模块化架构,提供了一种快速...无论你是Spring新手还是经验丰富的开发者,都可以从Spring Roo中获益。

    springroo快速学习

    在本"SpringRoo快速学习"资料中,我们将深入理解SpringRoo的核心概念、安装与设置,以及如何利用它来创建和管理项目。 一、SpringRoo简介 SpringRoo是Spring框架的扩展,它使用命令行界面(CLI)或集成开发环境...

    spring roo 生成数据库表

    在这个场景中,"spring roo 生成数据库表"指的是使用Spring Roo工具来自动化创建与数据库表对应的Java实体类和数据访问层。 首先,Spring Roo支持多种数据库,包括MySQL、Oracle、PostgreSQL等。在开始之前,你需要...

    spring-roo-1.1.5.RELEAS

    开发者可以下载并解压此包,然后在自己的项目中使用这些组件,无需单独下载各个依赖。 Spring Roo的核心特性包括: 1. **代码生成**:它可以帮助快速生成Maven或Gradle项目的结构,包括实体类、控制器、视图以及...

    SpringRoo 官方文档-版本 2.0.0.RC1

    ### SpringRoo官方文档知识点概览 #### 一、概述 SpringRoo 是一款由 Pivotal Software(现为 VMware 的一部分)开发的...通过深入学习和掌握 SpringRoo 的使用方法,开发者可以更快地构建高质量的Spring应用程序。

    spring-roo-1.3.2.zip

    总结来说,Spring Roo 1.3.2是Spring框架下的一款强大的开发工具,旨在通过自动化和代码生成加速Java应用的开发流程,同时保持与Spring生态系统的紧密集成,让开发者能更专注于业务逻辑的实现,而非基础设施的搭建。

    spring-roo-docs

    ### SpringRoo-ReferenceDocumentation 1.2.5.RELEASE 关键知识点解析 ...以上是对SpringRoo-ReferenceDocumentation 1.2.5.RELEASE的关键知识点总结,希望能帮助读者更好地理解和使用SpringRoo。

    spring-roo-2.0.0.RC1.zip

    Spring Roo是Spring框架家族中的一个开源工具,旨在简化Java应用程序的开发过程,特别是Spring MVC和Spring Data应用。这个"spring-roo-2.0.0.RC1.zip"压缩包包含的是Spring Roo的2.0.0 Release Candidate 1版本,这...

    os-springroo2-sample_code

    【标签】"s springroo2 sample code"进一步明确了项目的核心内容,即它与Spring Roo 2相关,是一个包含示例代码的集合,可以帮助开发者学习如何在实际项目中使用该框架。 在压缩包中,有两个子文件夹:`feedback`和...

    spring Roo安装使用简介

    * 可以在Eclipse/STS中安装Spring Roo插件,以便在IDE中使用Spring Roo。 知识点二:Spring Roo命令行工具 * 使用Spring Roo命令行工具可以快速生成项目原型和骨架。 * 许多Roo命令可以在命令提示符中输入,以便...

    Spring Roo - Reference Documentation

    除了标准教程之外,Spring Roo还提供了多个实际应用案例,如婚礼RSVP应用,以更直观的方式展示框架在真实场景中的应用。通过跟随这些案例的开发过程,开发者可以更深刻地理解Roo在处理特定业务需求时的能力。 #### ...

    spring-roo-1.1.0.M1.zip_54587.m1_M1 ssh_Spring Roo download_spri

    Spring Roo是Spring Framework的一个附加工具,它为Java开发者提供了一...这个压缩包提供的资源正是为了帮助开发者快速启动基于Spring的项目,利用Spring Roo的自动化功能和SSH的安全特性来构建高效且安全的Java应用。

    Spring Roo 简介

    5. **安装插件**:将插件安装到 Spring Roo 中,以便在 Rooshell 中使用。 #### 结论 Spring Roo 作为一款专为提高 Java 开发者生产力而设计的工具,不仅极大地简化了基于 Spring 的应用程序开发流程,还提供了...

Global site tag (gtag.js) - Google Analytics