我正在使用Grails,并且作为我项目的要求,我想根据用户要求连接到数据库。因此,我必须从用户那里获取数据库凭证,例如用户名,密码,URL。我如何通过在运行时在数据源中设置这些值来连接到他们的数据库。有什么办法可以动态设置这些值?
最佳答案
我将解释这个概念,并让您自己实施。请注意,这并非完全简单,并且确实需要您对细节进行一些研究,但是如果您愿意,可以完成此操作。
这里的基本概念是将应用程序中的每个数据源定义为一个Spring bean。这是任何Grails应用程序的默认行为。这样,您可以用新定义的bean替换bean。在您的情况下,您将需要使用第二个数据源。 Bean名称取决于您在DataSources.groovy
中的命名方式。
看一下Grails文档的Spring部分,其中显示了一些配置数据源的示例。同样的概念将适用于您的情况。只需确保使用正确的bean名称,并且在替换现有bean之前还调用了destroy / close方法即可。
根据实现替换的方式(以及是否使用GenericBeanDefinition
),您可能需要使用grailsApplication.mainContext.registerBeanDefinition(beanName, beanDefinition)
。
正如我所说的,这是可以做到的,但是您将不得不学习一些有关Spring和bean定义的内部知识,以及在运行时构建和操作它们的API。
希望这可以帮助您入门。
关于grails - 如何动态设置数据源属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28721360/