博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring aop环绕通知
阅读量:5138 次
发布时间:2019-06-13

本文共 1001 字,大约阅读时间需要 3 分钟。

 

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

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

 

如果采用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,锁定方法:

  这样执行的结果如下:

The audience is taking their seats.The audience is turning off their cellphonesbegin!Instrumentalist age:25Playing Jingle Bells:TOOT TOOT TOOTCLAP CLAP CLAPend!        performance took 95 milliseconds

  因此可以看出AOP执行的过程如下:

  before()  around()  执行方法()  after/throw()  around()

转载于:https://www.cnblogs.com/panxuejun/p/5993883.html

你可能感兴趣的文章
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
查看>>
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
java SE :标准输入/输出
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
Sql Server 中由数字转换为指定长度的字符串
查看>>
tmux的简单快捷键
查看>>
[Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
查看>>
php match_model的简单使用
查看>>
Vue_(组件通讯)子组件向父组件传值
查看>>
STM32单片机使用注意事项
查看>>
移动开发平台-应用之星app制作教程
查看>>
springboot No Identifier specified for entity的解决办法
查看>>
51nod 1428 活动安排问题 (贪心+优先队列)
查看>>
如何在maven工程中加载oracle驱动
查看>>
aboutMe
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>