如何在引导程序中获取 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