考虑从Java / Spring MVC迁移到Grails

时间:2010-06-15 19:09:50

标签: java spring grails groovy

我目前正在使用Java& Spring(MVC)创建一个webapp,我正在考虑转移到Grails。我很感激以下方面的反馈/见解:

  1. 我在当前的Java / Spring webapp中有多个应用程序上下文,我通过web.xml ContextLoaderListener加载;是否有可能在Grails中有多个应用程序上下文?如果,是的,怎么样?

  2. 此Web应用程序广泛使用CXF restful Web服务,当前的Java / Spring Web应用程序使用捆绑的CXF HTTP客户端。我可以继续在Grails中使用(Java)CXF HTTP客户端吗?

  3. 我使用UserDetails和UserDetailsS​​ervice的自定义实现实现了Spring Security,我可以“按原样”在Grails中重用这些实现,还是必须重新实现它们?

  4. 有一个实例我依赖于Spring的jdbc模板(而不是可用的ORM)以及我在应用程序上下文中定义的其他数据源,我可以在Grails中重复使用它吗?

  5. 我打算将Maven用作项目管理工具;有没有使用Maven和Grails的问题,其中有groovy和java的组合?

  6. 修改 我正在考虑转移到Grails,以便更快地开发webapp的web组件,而不是Ruby-on-Rails。另外,我正在考虑Grails,而不是说Ruby-on-Rails,因为我想继续使用JVM,而且我过去常常使用Grails,并且它很容易上传和使用。

4 个答案:

答案 0 :(得分:6)

  1. 可能。 Grails使用Spring的ContextLoaderListener类的子类,它在web.xml文件中配置。如果你让我知道你是如何用Spring MVC做的话,我可以更准确地回答。

  2. 是。你甚至可能对CXF插件感兴趣,虽然我不能担保它:

    http://grails.org/plugin/cxf

  3. 您应该可以按原样使用它们。但是,您可能想要检查是否可以使用Spring Security插件轻松完成此操作。我相信它是,但你可以从插件的作者Burt Beckwith那里得到明确的答案。

  4. 是。你也可以抓住Hibernate会话工厂来做原始Hibernate的东西。 GORM还可以使用多个数据源:

    http://grails.org/plugin/datasources

    另一个Burt Beckwith一个:)

  5. 这取决于“Groovy和Java的组合”的含义。您可以使用Maven构建Grails项目,但集成并不完全顺利。如果您的Grails项目中有Java和Groovy,则会自动处理。

  6. 为了回应Bozho,我使用标准的Grails服务+ GORM,不会以任何其他方式进行。请注意,如果将Java用于服务和域模型,则不会自动重新加载服务。你也失去了Groovy带来的表现力和简洁性的好处。

    如果需要,可以在Grails服务中使用静态类型,以便IDE更轻松地提供代码完成。它还可以为您提供有关它无法识别的属性和方法的提示(这些对应于Java编译错误)。也就是说,即使您使用静态类型,Groovy也无法在编译时进行类型检查。你只会在运行时发现它们。

答案 1 :(得分:0)

你可以用grails做所有这些事情。它支持所有现有的Java类和弹簧配置(grails构建在spring mvc之上)

但是,我真的不建议将整个应用程序移动到grails。如果您的Web开发人员不是Java专家,那么您也许只能移动Web层。

服务层,数据访问等更好地保持纯Java。也就是说,只有您的Web控制器 - 收集用户输入的组件,处理http请求和会话,应该使用grails。其余的 - 无状态服务类和您的域模型最好是Java。这是我的意见,但我已经有了一些Grails的经验,而且服务层中的静态类型将为您省去很多麻烦。

答案 2 :(得分:0)

2)是的,您可以按原样使用CXF。 CXF顶部有一个很好的层叫做GroovyWS。我只是用它来消费SOAP服务,但也许它也有用于REST的东西。它真的很容易使用。 为了使用REST服务,我使用了HTTP Builder

4)是的。您可以继续使用例如用于配置数据源的spring配置,或者您今天执行此操作的任何其他方式。多个数据源都没问题。

5)我最近尝试将Grails(1.2.1)与Maven一起使用。它有效,但Maven和Grails都试图进行依赖管理。文档可能是最糟糕的部分。我还没有尝试升级到1.3,因为有一些与Maven相关的主要JIRA,但是1.3.2即将到来,而且这些问题现在已经解决了:)还有一个1.3.2 maven原型。期待那样。 “部署和解决Maven存储库中的插件”是Grails 1.3的新功能之一,所以事情可能更好。 1.3.2的路线图说今天发布,但是在发言时还有8个问题,所以我的猜测是明天,Grails版本通常是按时发布的。如果你可以等待,你可能会省去一些麻烦。

答案 3 :(得分:0)

如果您正在寻找快速的应用程序开发,但对于groovy并不特别热衷,那么您应该考虑一下spring-roo。它提供了相同类型的RAD功能,但构建了一个完全标准的java + ORM + spring-mvc应用程序(在roo上没有实际的依赖关系(运行时或编译))。它绝对不像grails那样成熟,但你可能会发现它更适合你现有的静态类型java代码和现有的ORM等经验。我只在roo做了几个小宠物项目,但我一直都很到目前为止印象深刻,尤其是自定义生成的代码并在写入和生成的代码之间来回移动是多么容易。最初的教程非常迅速且非常有启发性。