Config.groovy中我看到这一点:如何在运行时在我的Grails Config.groovy中获得好东西?
// set per-environment serverURL stem for creating absolute links
environments {
production {
grails.serverURL = "http://www.changeme.com"
}
}
什么是访问在运行时的正确方法是什么?
Config.groovy中我看到这一点:如何在运行时在我的Grails Config.groovy中获得好东西?
// set per-environment serverURL stem for creating absolute links
environments {
production {
grails.serverURL = "http://www.changeme.com"
}
}
什么是访问在运行时的正确方法是什么?
danb在正确的轨道上。但是,如果您进行更好的导入,生活会变得更容易:
import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH
println CH.config.grails.serverURL
那就是:
import org.codehaus.groovy.grails.commons.ConfigurationHolder
println ConfigurationHolder.config.grails.serverURL
另外,在控制器和标签,显然这将工作:
grailsApplication.config.grails.serverURL
我需要它处于引导,所以选项1是我所需要的。
这篇文章解释了它应该还是可以使用的引导选项2(非过时的做法):http://stackoverflow.com/questions/7133580/how-to-access-grails-configuration-in -grails-2-0 – 2012-11-26 12:23:54
在更新版本的Grails ConfigurationHolder中已被弃用。
相反,您应该使用grailsApplication对象。
grailsApplication.config.grails.serverURL
如果在控制器或服务中,则使用grailsApplication对象的依赖注入。 例如
class MyController{
def grailsApplication
def myAction() {
grailsApplication.config.grails.serverURL
}
如在几的评论所提到的,另一种选择是将其在2.0的Grails添加grails.utils.Holders
类。我更喜欢这种方法,因为您可以在未配置依赖注入的类中使用它。
import grails.util.Holders
class Foo {
def bar() {
println(Holders.config.grails.serverURL)
}
}
非常好..我完全不知道这个功能,我将称之为导入别名。 – danb 2008-10-13 18:33:26
在grails 2.0和更高版本中,ConfigurationHolder(和其他持有者)已被弃用。相反,你应该使用依赖注入。请参阅我的回答 – khylo 2012-05-15 09:40:03