我有一个Grails应用程序,其服务类继承自Groovy的GroovyInterceptable:
class customerSerrvice implements GroovyInterceptable {
private List<Customer> customers
def invokeMethod(String name, args) {
log.debug "=======>INVOKING method [$name] with args:$args"
}
void foo() {
customers.each { doSomething(it) }
}
void doSomething(Customer cust) { log.debug "doSomething invoked with $cust" }
}
以上是一个大大简化的表示,但它给你的想法。如果我从另一个类调用foo()或doSomething()直接,则调用invokeMethod就像它应该的那样。但是,当foo()调用doSomething()时,该调用不会在invokeMethod中被截获。
如果我从
改变 customers.each { doSomething(it) }
要
for(Customer cust: customers) { doSomething(cust) }
然后调用invokeMethod就好了。
那么关于闭包和GroovyInterceptable有什么不一致的吗?有没有办法让invokeMethod与闭包一起使用而不是全部改变它们?
由于