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()
  • 相关阅读:
    第12讲:数据库完整性
    第11讲:视图及其应用
    第10讲:利用SQL语言实现关系代数操作
    ArcEngine 坐标系转换
    [转]ArcGIS计算图斑的四邻坐标(XMin,XMax,YMin,YMax)
    oracle11g 修改字符集 修改为ZHS16GBK
    Oracle 全文索引相关命令
    SQL语句 递归
    流量操控之SSH隧道与端口转发
    VIM 常用操作
  • 原文地址:https://www.cnblogs.com/xing901022/p/4265544.html
Copyright © 2011-2022 走看看