GroovyInterceptable(AOP)和闭包

时间:2010-12-24 21:58:28

标签: grails groovy aop

我有一个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与闭包一起使用而不是全部改变它们?

由于

1 个答案:

答案 0 :(得分:0)