【问题标题】:how to set datasource properties dynamically如何动态设置数据源属性
【发布时间】:2015-02-25 14:19:30
【问题描述】:

我正在使用 Grails,并且作为我的项目的要求,我想根据用户的要求连接到数据库。所以我必须从用户那里获取数据库凭据,如用户名、密码、URL。如何通过在运行时在数据源中设置这些值来连接到他们的数据库。有什么方法可以动态设置这些值?

【问题讨论】:

  • 您是希望每个用户都有一个数据源,还是只希望用户重新配置整个应用程序使用的单个数据源?你的问题不清楚。
  • 我有自己的 mysql 数据库。我想连接到用户数据库并获取其所有记录并将其保存在我的数据库中。为此我想要它的凭据。我正在使用多个数据源 1.我自己的DB 2.用户的数据库。

标签: grails datasource


【解决方案1】:

我将解释这个概念并将实施留给您。请注意,这并不简单,确实需要您对细节进行一些研究,但如果您愿意这样做,您可以做到这一点。

这里的基本概念是应用程序中的每个数据源都被定义为一个 Spring bean。这是任何 Grails 应用程序的默认行为。因此,您可以用新定义的 bean 替换 bean。在您的情况下,您将希望使用您的第二个数据源来执行此操作。 bean 名称由您在 DataSources.groovy 中的命名方式决定。

查看 Grails 文档的 Spring 部分,其中显示了一些配置数据源的示例。相同的概念将适用于您的情况。只需确保使用正确的 bean 名称,并且在替换现有 bean 之前还调用了销毁/关闭方法。

根据您实现替换的方式(以及是否使用GenericBeanDefinition),您可能需要使用grailsApplication.mainContext.registerBeanDefinition(beanName, beanDefinition)

正如我所说,这是可以做到的,但是您将不得不学习一些关于 Spring 和 bean 定义的内部结构,以及在运行时构建和操作它们的 API。

希望这有助于您入门。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 2015-10-19
    相关资源
    最近更新 更多