gpt4 book ai didi

java - Grails 与另一个 Spring 应用程序的集成 - 数据源过载

转载 作者:搜寻专家 更新时间:2023-11-01 03:45:30 24 4
gpt4 key购买 nike

我目前正在为一个现有的基于 Spring 的应用程序构建一个 CRUD 工具。该应用程序作为 JAR 库包含在 Grails 应用程序中,看起来运行良好。

为了利用库自己的 spring 上下文,我曾经通过以下方式加载它:

def ctx = new ClassPathXmlApplicationContext( 'classpath:/applicationContextName.xml')

在我的服务中。不幸的是,上下文构建了自己的数据源(库的默认值),这并不好,因为我需要使用 Grails 中定义的数据源。

因此,我的解决方案是通过向 grails-app\conf\spring\resources.xml 文件添加一个导入,将库的 spring 配置包含在 Grails 上下文中。

这似乎可行(因为所有 bean 都加载到相同的上下文中,我现在可以使用 def variableName 将 bean 直接 Autowiring 到我的服务类中。

不幸的是,库的 spring 配置中定义的数据源正在重载我的 Grails DataSource.groovy 文件中定义的数据源!

有什么方法可以告诉 Grails 先加载库的 spring 配置,然后它会被 Grails 配置的其余部分覆盖(并因此使用 Grails 的数据源)?

谢谢你的帮助,

詹姆斯

...

作为一项临时措施,我删除了依赖项的 spring 配置文件中的 dataSource 条目,并且它的 bean 已注入(inject)由 Grails 配置创建的 dataSource - 但这并不理想,因为我不得不做一个依赖 jar 的“特殊”构建。

最佳答案

我会考虑制作一个包含您的库的简单插件,并让它在 dataSources 插件之前加载(在您的 *Plugin.groovy 文件中使用 def loadBefore = ['datasources'])。

每个插件都有一个 doWithSpring Hook ,它允许您将 bean 添加到上下文中(您可以在其中包含现有的 context.xml)。

作为一个额外的好处,它将使下次重新使用该库变得更加容易:)

干杯

关于java - Grails 与另一个 Spring 应用程序的集成 - 数据源过载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1782540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com