如何在运行时获取 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中解析JSON时如何获取真正的空值而不是JSONObject.NULL值
Grails 2.3.4 池为空。无法在 30 秒内获取连接