【问题标题】:Grails app using services from spring-mvc backendGrails 应用程序使用来自 spring-mvc 后端的服务
【发布时间】:2013-09-13 13:30:03
【问题描述】:

我们有一个相当复杂的 Web 应用程序,它使用 spring-mvc 和 maven 构建系统编写,并希望在前端利用 Grails 的所有功能。 所以 Grails 应用本质上会调用 spring-mvc 应用的服务层来访问它的业务逻辑和数据。

我需要一些关于我的架构方法的指导,以实现这种高层次的集成。 据我了解,我需要; - 在我的 BuildConfig.groovy 中添加我的 spring-mvc 应用程序作为编译依赖项。 - 在我的 conf/spring/resources.groovy 中将服务层对象公开为服务 bean,并将它们注入到我的控制器中

问题: 我的 spring-mvc 应用程序有很多自己的依赖项(它显然必须拥有),这会导致很多依赖项错误。我应该在我的配置中设置“transitive=false”并在我的 Grails 应用程序中调用所有这些吗? 数据源应该如何配置?我想我必须通过从我的 Grails applicationContext 调用它来集成我的 spring-mvc 应用程序的 applicationContext 并希望它能够很好地引导?

【问题讨论】:

  • 如何在这个 Spring 服务中访问你的数据库?是通过依赖注入?
  • 在 spring 中通过数据源 bean 连接数据库访问。这正是为什么我觉得在将其暴露给 Grails 应用程序方面我还有更多工作要做。

标签: java spring grails spring-mvc


【解决方案1】:

所以 Grails 应用本质上会调用 spring-mvc 应用的服务层来访问其业务逻辑和数据

您能否更具体地说明您想从 Grails 中使用哪些 Spring MVC 组件,仅仅是服务和数据源吗?

我需要在我的 BuildConfig.groovy 中添加我的 spring-mvc 应用程序作为编译依赖项

是的

在我的conf/spring/resources.groovy 中将服务层对象公开为服务 bean

虽然您可以通过在 resources.groovy 中单独定义 Spring bean 来让您的 Grails 应用程序知道它们,但这是不必要的,因为您已经在 Spring MVC 项目的 Spring XML 文件中(可能)定义了它们。

相反,您可以使用 BeanBuilder 的 importBeans method 将此 XML 文件中定义的 Spring bean 导入 Grails 应用程序。将 Spring MVC 项目添加为 Grails 应用程序的依赖项后,Spring XML 文件应该在您的类路径中,因此您只需将以下内容添加到 resources.groovy

beans = {
    importBeans('classpath:/path/to/file/applicationContext-services.xml')
}

应该如何配置数据源?

名为 dataSource 的 Spring bean 定义了 Grails 应用程序使用的数据源。在标准 Grails 应用程序中,此 bean 是基于 DataSource.groovy 中的配置创建的。如果您的 Spring MVC 应用程序定义了具有此名称的 bean,则应在进行上述更改后改用此名称。为了确保 Grails 使用的是 Spring MVC 应用程序中的数据源,而不是 DataSource.groovy 中的任何数据源,我想您可以删除后者的内容。

【讨论】:

  • 全部完成。一旦我完成了短暂的依赖汤,我按照 Don 的建议配置了我的 grails 应用程序,它现在可以工作了。我正在从我的 Grails 控制器调用我的 Java 应用程序的服务层。谢谢唐!
猜你喜欢
  • 2013-09-24
  • 1970-01-01
  • 2015-10-23
  • 2013-01-08
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多