我设法通过
拦截非静态方法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
我在这里遗漏了什么吗? 希望有人能给我解释静态方法拦截是如何工作的。