我想是能够根据此定义的约定把我的元类在包groovy.runtime.metaclass 使用委派元类 。 我已经把MyClassMetaClass
在groovy.runtime.metaclass.mypackage.
对于具体的类mypackage.MyClass{}
不幸的是调用MyClass{}
不会被截获MyClassMetaClass{}
也许这是关系到Grails的如何初始化..?
Answer 1:
它可以通过改变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 = {
}
}
Ofcourse,这是不一样的问题中提及实施委派元类。
文章来源: Grails and Groovy metaclass package name convention