我目前正在更新我的 Grails 项目,以便不使用已弃用的 ConfigurationHolder 类。这在大多数情况下都很好,但是我在自定义编解码器类中遇到了麻烦,直到现在我一直在使用以下方法:
import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH
class MyCodec {
static boolean myStaticConfigProperty=CH.config.myStaticConfigProperty
static encode = { something ->
if(myStaticConfigProperty)
...
}
}
直接注入使用
def grailsApplication
在这种情况下不起作用,因为这将作为非静态对象注入。
相反,我尝试使用这篇文章getting-grails-2-0-0m1-config-info-in-domain-object-and-static-scope中建议的方法,但即使在注入 grailsApplication 对象后我也无法使其工作在引导程序中进入我的编解码器元类:
class BootStrap {
def grailsApplication
def init = { servletContext ->
for (cc in grailsApplication.codecClasses) {
cc.clazz.metaClass.getGrailsApplication = { -> grailsApplication }
cc.clazz.metaClass.static.getGrailsApplication = { -> grailsApplication }
}
}
}
任何人都可以提出一种方法,允许我在编解码器类中以静态方式访问配置对象吗?