在Config.groovy中我看到了:
// set per-environment serverURL stem for creating absolute links
environments {
production {
grails.serverURL = "http://www.changeme.com"
}
}
在运行时访问该文件的正确方法是什么?
答案 0 :(得分:74)
在更新版本的Grails中,不推荐使用ConfigurationHolder。
相反,您应该使用grailsApplication对象。
grailsApplication.config.grails.serverURL
如果在Controller或Service中,则使用grailsApplication对象的依赖注入。 e.g。
class MyController{
def grailsApplication
def myAction() {
grailsApplication.config.grails.serverURL
}
答案 1 :(得分:31)
danb走在正确的轨道上。但是,如果你做了更好的导入,生活会变得更容易:
import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH
println CH.config.grails.serverURL
答案 2 :(得分:14)
这里是:
import org.codehaus.groovy.grails.commons.ConfigurationHolder
println ConfigurationHolder.config.grails.serverURL
或者,在控制器和标签中,显然这将起作用:
grailsApplication.config.grails.serverURL
我在BootStrap中需要它,所以选项1就是我需要的。
答案 3 :(得分:10)
正如一些评论中所提到的,另一个选项是Grails 2.0中添加的grails.utils.Holders
类。我更喜欢这种方法,因为您可以在未配置依赖注入的类中使用它。
import grails.util.Holders
class Foo {
def bar() {
println(Holders.config.grails.serverURL)
}
}