zoukankan      html  css  js  c++  java
  • 【Spring实战】—— 9 AOP环绕通知

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

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

    如果采用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()
  • 相关阅读:
    蟠桃记
    考新郎
    有假币
    年会抽奖
    发邮件
    进制回文数
    数位和
    外星人的语言
    一的个数
    继承
  • 原文地址:https://www.cnblogs.com/xing901022/p/4265544.html
Copyright © 2011-2022 走看看