Grails和Groovy的元类包名称约定(Grails and Groovy metaclass

2019-09-20 13:31发布

我想是能够根据此定义的约定把我的元类在包groovy.runtime.metaclass 使用委派元类 。 我已经把MyClassMetaClassgroovy.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