Way*_*yne 6 grails grails-domain-class
如何从域对象或静态范围获取Config.groovy信息?我现在正在使用ConfigurationHolder.config.*,但是这个和ApplicationHolder已被弃用,所以我想'做对'...但是grailsApplication对象在DO /静态范围内不可用.
Ian*_*rts 19
Grails的2更换为弃用ApplicationHolder,ConfigurationHolder等等是grails.util.Holders,它提供了相同的功能,但在某种程度上是安全的,当在相同的容器几个不同的web应用在父类加载器正在共享的Grails JAR文件的单个副本(这是老持有人破产的情况).
import grails.util.Holders
// ...
static void foo() {
def configOption = Holders.config.myapp.option
}
Run Code Online (Sandbox Code Playgroud)
我将添加grailsApplication到域类的元类 - 这是我正在考虑为2.0决赛做的事情.现在,把它放进去BootStrap.groovy,例如
class BootStrap {
def grailsApplication
def init = { servletContext ->
for (dc in grailsApplication.domainClasses) {
dc.clazz.metaClass.getGrailsApplication = { -> grailsApplication }
dc.clazz.metaClass.static.getGrailsApplication = { -> grailsApplication }
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以grailsApplication.config通过grailsApplication.mainContext.getBean('foo')或只是访问配置,和Spring bean grailsApplication.mainContext.foo.