在每个方法/函数启动后跟踪Groovy

时间:2014-04-01 12:15:15

标签: logging groovy annotations tracing aspect

我得到了同样的问题 In Groovy Is there a way to decorate every class to add tracing? 但是这个答案现在已有几年了,所以我想知道现在是否有更好更简单的方法在执行方法之前,之后或周围执行某些代码。我更喜欢像

这样的注释
@TraceLog
class Foo {
   def bar() {
       println "in bar"
   }
}

class Foo { 
   @TraceLog
   def bar() {
       println "in bar"
   }
}

因此,当我调用bar()时,在打印“in bar”之前执行一些代码(由TraceLog Aspect或类似定义)。 那可能是groovy吗?

1 个答案:

答案 0 :(得分:3)

您可以通过AST转换as shown here

来完成此操作

应谨慎对待该示例,因为endMessage仅作为方法中的最后一个语句添加。如果该方法具有返回值,则可能是错误的......