В настоящее время я обновляю свой проект 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 }
}
}
}
Может ли кто-нибудь предложить подход, который позволит мне получить доступ к объекту конфигурации статическим способом внутри классов кодеков?