考虑从Java/SpringMVC迁移到Grails

考虑从Java/SpringMVC迁移到Grails,java,spring,grails,groovy,Java,Spring,Grails,Groovy,我目前正在使用Java&Spring(MVC)创建一个webapp,我正在考虑迁移到Grails。我希望得到以下方面的反馈/见解: 我通过web.xml ContextLoaderListener加载的当前Java/Spring webapp中有多个应用程序上下文;Grails中是否可能有多个应用程序上下文?如果是,怎么做 此webapp广泛使用CXF restful web服务,当前的Java/Spring webapp使用捆绑的CXF HTTP客户端。我可以继续在Grails中使用(Java

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

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

  • 此webapp广泛使用CXF restful web服务,当前的Java/Spring webapp使用捆绑的CXF HTTP客户端。我可以继续在Grails中使用(Java)CXF HTTP客户机吗

  • 我使用UserDetails和UserDetailsService的自定义实现实现了Spring安全性,我可以“按原样”在Grails中重用这些实现,还是必须重新实现它们

  • 有一个实例,我依赖于Spring的jdbc模板(而不是可用的ORM)和我在应用程序上下文中定义的附加数据源,我可以在Grails中重用它吗

  • 我计划使用Maven作为项目管理工具;在groovy和java结合的Grails中使用Maven有什么问题吗

  • 编辑:
    我正在考虑迁移到Grails,以使webapp的web组件的开发“更快”,这是一种基于Rails的Ruby。另外,我考虑的是Grails,而不是RubyonRails,因为我想继续使用JVM,我以前也接触过Grails,它非常容易学习和使用。

    你可以在Grails中完成所有这些事情。它支持所有现有的Java类和spring配置(grails构建在SpringMVC之上)

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

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

  • 可能吧。Grails使用Spring的ContextLoaderListener类的一个子类,该类在web.xml文件中配置。如果您告诉我如何使用SpringMVC,我可以更准确地回答

  • 对。您甚至可能对CXF插件感兴趣,尽管我不能保证:

  • 您应该能够按原样使用它们。但是,您可能需要检查是否可以使用Spring安全插件轻松完成此操作。我相信是的,但是你可以从插件的作者伯特·贝克维思那里得到一个明确的答案

  • 对。您还可以使用Hibernate会话工厂来执行原始Hibernate内容。GORM还可以使用多个数据源:

    另一个伯特·贝克汉姆和一个:)

  • 这取决于“Groovy和Java的结合”是什么意思。您可以使用Maven构建Grails项目,但集成并不完全顺利。如果您的Grails项目中有Java和Groovy,那么它会自动处理

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

    如果需要,可以在Grails服务中使用静态类型,使IDE更容易提供代码完成。它还可以为您提供关于它无法识别的属性和方法的提示(这将对应于Java编译错误)。也就是说,即使使用静态类型,Groovy也不能在编译时进行类型检查。您只能在运行时了解它们。

    2)是的,您可以按原样使用CXF。在CXF的顶部有一个很好的层,称为。我只在使用SOAP服务时使用过它,但它也可能有其他功能。它真的很容易使用。 用于使用我使用过的REST服务

    4) 对。您可以继续使用例如spring配置来配置数据源,或者今天使用的任何其他方式。多个数据源没有问题


    5) 我最近尝试在Maven中使用Grails(1.2.1)。这是可行的,但Maven和Grails在尝试进行依赖关系管理时都出现了一些问题。文档可能是最糟糕的部分。我还没有尝试升级到1.3,因为一些主要的Maven相关JIRAs,但是1.3.2即将到来,这些问题现在已经解决:)还有1.3.2 Maven原型。我很期待。“Maven存储库中插件的部署和解析”是Grails1.3的新特性之一,因此情况可能会更好。1.3.2的路线图上说是今天发布,但现在还剩下8个问题,所以我猜是明天,Grails的发布通常是准时的。如果您可以等待,您可能会为自己省去一些麻烦。

    如果您正在寻找快速的应用程序开发,但在其他方面对groovy并不特别感兴趣,那么您应该研究SpringRoo。它提供了相同类型的RAD功能,但构建了一个完全标准的java+ORM+SpringMVC应用程序(在roo上没有实际的依赖项(运行时或编译)。它肯定没有grails那么成熟,但您可能会发现它更适合您现有的静态类型java代码和现有ORM等经验。我在roo中只做了几个小的pet项目,但到目前为止,我印象非常深刻,特别是定制生成的代码以及在编写的代码和生成的代码之间来回移动是多么容易。最初的教程非常快速,非常有启发性。

    您能进一步解释一下“服务”是什么意思吗