1

我们有一个相当复杂的 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 并希望它能够很好地引导?

4

1 回答 1

3

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

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

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

是的

将服务层对象公开为我的服务 beanconf/spring/resources.groovy

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

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

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

数据源应该如何配置?

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

于 2013-09-13T15:03:41.680 回答