考虑从 Java/Spring MVC 迁移到 Grails

2022-09-04 22:58:27

我目前正在使用Java&Spring(MVC)来创建一个web应用程序,我正在考虑迁移到Grails。我非常感谢以下方面的反馈/见解:

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

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

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

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

  5. 我计划使用Maven作为项目管理工具;在有时髦和java组合的情况下,将Maven与Grails一起使用是否存在任何问题?

编辑:我正在考虑迁移到Grails,以使Web应用程序的Web组件的开发“更快”,就像Ruby-on-Rails一样。另外,我正在考虑Grails而不是Ruby-on-Rails,因为我想继续使用JVM,而且我过去曾涉足过Grails,并且它很容易拿起和使用。


答案 1
  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

    另一个伯特·贝克维斯一:)

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

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

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


答案 2

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

但是,我真的不建议将整个应用程序移动到grails。如果您拥有不是Java专家的Web开发人员,则可以仅移动Web层。

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


推荐