【Spring实战】—— 9 AOP环绕通知

假若有这么一个场景,须要统计某个方法执行的时间,如何作呢?spa

  典型的会想到在方法执行前记录时间,方法执行后再次记录,得出运行的时间。code

 

若是采用Spring的AOP,仅仅使用前置和后置方法是没法作到的,由于他们没法共享变量。这样经过环绕通知,就能够快捷的实现。orm

  首先在切面通知类中声明环绕通知类:xml

public void watchPerformance(ProceedingJoinPoint joinpoint){ try{ System.out.println("begin!"); long start = System.currentTimeMillis(); joinpoint.proceed(); long end = System.currentTimeMillis(); System.out.println("end! performance took "+(end-start)+" milliseconds"); }catch(Throwable e){ System.out.println("eee!We want our money back!"); } }

  在bean.xml配置文件中配置aop:around,锁定方法:blog

<aop:around pointcut-ref="performance" method="watchPerformance"/>

  这样执行的结果以下:form

The audience is taking their seats. The audience is turning off their cellphones begin! Instrumentalist age:25 Playing Jingle Bells:TOOT TOOT TOOT CLAP CLAP CLAP end! performance took 95 milliseconds

  所以能够看出AOP执行的过程以下:class

  before()   around()   执行方法()   after/throw()   around()
相关文章
相关标签/搜索