如何在引导程序中获取 grails 数据源 createdb 属性

Posted

技术标签:

【中文标题】如何在引导程序中获取 grails 数据源 createdb 属性【英文标题】:How to get grails datasource createdb property in bootstrap 【发布时间】:2011-03-09 05:19:11 【问题描述】:

我想让我的 Bootstrap 依赖于 grails DataSource.groovy 文件中的 createdb 属性。当设置为'create'时,应该生成新的Master Data,如果设置为'update',则无。

我找到了GrailsDataSource in the Grails API,它也有一个方法 getCreateDb,但我不知道如何从 Bootstrap 访问它以用于相应的 Bootstrap 环境。

【问题讨论】:

【参考方案1】:

最简单的方法可能是从配置中检查 dbCreate 的值,如下所示:

import org.codehaus.groovy.grails.commons.ApplicationHolder

if (ApplicationHolder.application.config.dataSource.dbCreate == "create") 
    ...do create stuff...
 else if (ApplicationHolder.application.config.dataSource.dbCreate == "update") 
    ...do update stuff...

【讨论】:

【参考方案2】:

获取 dbCreate 属性的最新方法是将 'grailsApplication' 注入 BootStrap.groovy:

def grailsApplication

if(grailsApplication.config.dataSource.dbCreate == 'create')
    ...

ApplicationHolder 现在已被弃用,我无法让它工作。

希望对某人有所帮助。

【讨论】:

【参考方案3】:

不推荐使用来自 ataylor 的回答。请参考How to access Grails configuration in Grails 2.0?。

在 canotto90 回答中还应注意,注入 def grailsApplication 应出现在 BootStrap 的 init 闭包之外。以其他方式你得到NPE。

【讨论】:

以上是关于如何在引导程序中获取 grails 数据源 createdb 属性的主要内容,如果未能解决你的问题,请参考以下文章

类 [] 上的方法在 Grails 应用程序之外使用。如果在使用模拟 API 或引导 Grails 的测试上下文中正确运行

如何获取 Grails 的 jasper 报告的数据源连接?

如何从 Grails 中的 Spring Security 获取普通密码或解密密码?

如何从 grails 应用程序中的 sessionId 获取 HttpSession

如何获取 Grails/Tomcat Webapp 的当前工作目录?

如何在grails应用程序中获取每个请求的内存使用情况