grails元编程方法注入

时间:2012-03-12 16:05:01

标签: grails groovy metaprogramming

我设法通过

拦截非静态方法
grailsApplication.domainClasses.each { gc ->
 domainClasss = gc.clazz
   domainClass.metaClass.invokeMethod { String name,args ->
    delegate.log.info "printing method $name"
   }
}

并获得所需的结果

但是,如果我迭代静态方法,如

grailsApplication.domainClasses.each { gc ->
 domainClasss = gc.clazz
   domainClass.metaClass.static.invokeMethod { String name,args ->
    delegate.log.info "printing method $name"
   }
}

它不会打印所需的结果,而具有beforeInsert或beforeUpdate方法的domainClass [es]会返回如下错误:

java.lang.NullPointerException: Cannot invoke method encodePassword() on null object

我在这里遗漏了什么吗? 希望有人能给我解释静态方法拦截是如何工作的。

0 个答案:

没有答案