Grails和Groovy元类包名称约定

时间:2012-07-31 15:26:16

标签: grails groovy metaclass

我希望能够根据此处定义的约定using the delegating meta class将我的元类放在包groovy.runtime.metaclass中。我已将MyClassMetaClass放在groovy.runtime.metaclass.mypackage.中,用于具体类mypackage.MyClass{}。很遗憾,MyClass{}不会拦截对MyClassMetaClass{}的来电。也许这与grails如何初始化有关..?

1 个答案:

答案 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 = {
    }
}

当然,这与实现问题中提到的委托元类不同。