非推奨の ConfigurationHolder クラスを使用しないように、現在 Grails プロジェクトを更新しています。ほとんどの場合、これでうまくいきますが、カスタム コーデック クラスで問題に直面しています。ここでは、これまで次のアプローチを使用してきました。
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 }
}
}
}
コーデッククラス内で静的な方法で構成オブジェクトにアクセスできるようにするアプローチを誰かが提案できますか?