我正在使用Grails,并且根据用户要求,我希望根据项目的要求连接到数据库。所以我必须从用户那里获取用户名,密码,URL等数据库凭据。如何通过在运行时在数据源中设置这些值来连接到他们的数据库。有什么方法可以动态设置这些值吗?
答案 0 :(得分:0)
我将解释这个概念,并将实施留给您。请注意,这并不简单,并且需要您对细节进行一些研究,但如果您愿意这样做,则可以完成此任务。
这里的基本概念是应用程序中的每个数据源都被定义为Spring bean。这是任何Grails应用程序的默认行为。因此,您可以使用新定义的bean替换bean。在您的情况下,您将希望使用第二个数据源执行此操作。 bean名称取决于您在DataSources.groovy
中命名的方式。
查看Grails文档的Spring部分,其中显示了配置数据源的一些示例。同样的概念将适用于您的情况。请确保使用正确的bean名称,并在替换之前调用现有bean的destroy / close方法。
根据您实施替换的方式(以及是否使用GenericBeanDefinition
),您可能希望使用grailsApplication.mainContext.registerBeanDefinition(beanName, beanDefinition)
。
正如我所说,这可以做到,但是您将不得不学习一些关于Spring和bean定义的内部结构,以及在运行时构建和操作它们的API。
希望这有助于您入门。