您的位置:首页 > 编程语言 > Java开发

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

2016-04-15 12:04 441 查看
假如有这么一个场景,需要统计某个方法执行的时间,如何做呢?

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

 

如果采用Spring的AOP,仅仅使用前置和后置方法是无法做到的,因为他们无法共享变量。这样通过环绕通知,就可以快捷的实现。

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

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,锁定方法:

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


  这样执行的结果如下:

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执行的过程如下:

  before()
  around()
  执行方法()
  after/throw()
  around()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: