如何在运行时获取 Grails Config.groovy 中的好东西?

Posted

技术标签:

【中文标题】如何在运行时获取 Grails Config.groovy 中的好东西?【英文标题】:How do I get at the goodies in my Grails Config.groovy at runtime? 【发布时间】:2010-09-16 22:27:49 【问题描述】:

在 Config.groovy 我看到了这个:

// set per-environment serverURL stem for creating absolute links
environments 
    production 
        grails.serverURL = "http://www.changeme.com"
    

在运行时访问它的正确方法是什么?

【问题讨论】:

【参考方案1】:

在最近的 grails 版本中,ConfigurationHolder 已被弃用。

您应该使用 grailsApplication 对象。

grailsApplication.config.grails.serverURL

如果在 Controller 或 Service 中,则使用 grailsApplication 对象的依赖注入。 例如

class MyController
    def grailsApplication
    def myAction() 
        grailsApplication.config.grails.serverURL
    

见How to access Grails configuration in Grails 2.0?

【讨论】:

不错,在 Grials 2.0 中不推荐使用 ConfigurationHolder,与作为“动作”的闭包相同 :)。 grails.org/doc/2.0.x/guide/introduction.html#webFeatures @khylo 是不是也有可能使用自 Grails 2.0 起实现的 grails.util.Holders 对象并使用 Holders.config 来获得对 Config.groovy 文件的读取权限? 是的..这是真的。 .我不知道那门课【参考方案2】:

danb 走在正确的轨道上。但是,如果您进行更好的导入,您的生活会变得轻松一些:

import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH
println CH.config.grails.serverURL

【讨论】:

非常好..我完全不知道这个功能,我称之为导入别名。 在 grails 2.0 及更高版本中,ConfigurationHolder(和其他 Holder)已被弃用。相反,您应该使用依赖注入。请参阅下面的答案 由于无法进行依赖注入,有没有其他方法可以在没有 Holder 类的情况下访问 Util 类中的配置?【参考方案3】:

这里是:

import org.codehaus.groovy.grails.commons.ConfigurationHolder
println ConfigurationHolder.config.grails.serverURL

或者,在控制器和标签中,显然这会起作用:

grailsApplication.config.grails.serverURL

我在 BootStrap 中需要它,所以我需要选项 1。

【讨论】:

这篇文章解释了它应该仍然可以在 Bootstrap 中使用选项 2(不推荐使用的方法):***.com/questions/7133580/…【参考方案4】:

正如一些 cmets 中提到的,另一个选项是 Grails 2.0 中添加的 grails.utils.Holders 类。我更喜欢这种方法,因为您可以在未配置依赖注入的类中使用它。

import grails.util.Holders

class Foo 
    def bar() 
        println(Holders.config.grails.serverURL)
    

【讨论】:

以上是关于如何在运行时获取 Grails Config.groovy 中的好东西?的主要内容,如果未能解决你的问题,请参考以下文章

如何调试 grails 运行时异常?

在grails中解析JSON时如何获取真正的空值而不是JSONObject.NULL值

Grails:如何限制对用户的链接元素的获取?

Grails 2.3.4 池为空。无法在 30 秒内获取连接

如何在配置类路径阶段获取有关 Grails 应用程序的更多信息?

在 Grails 控制台中导入服务?