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