我希望能够根据此处定义的约定using the delegating meta class将我的元类放在包groovy.runtime.metaclass中。我已将MyClassMetaClass
放在groovy.runtime.metaclass.mypackage.
中,用于具体类mypackage.MyClass{}
。很遗憾,MyClass{}
不会拦截对MyClassMetaClass{}
的来电。也许这与grails如何初始化有关..?
答案 0 :(得分:0)
通过更改 BootStrap.groovy ,可以在grails项目中使用委派元类。
import org.codehaus.groovy.runtime.InvokerHelper
class BootStrap {
def init = { servletContext ->
def myMetaClass = new MyClassMetaClass(MyClass.class)
InvokerHelper.metaRegistry.setMetaClass(MyClass.class, myMetaClass)
}
def destroy = {
}
}
当然,这与实现问题中提到的委托元类不同。