Spring配置当中可以指定一个order的值,网络大部分回答都是order值越小,越先执行,这样的说法相对于切面来说没问题,但感觉十分的片面,通常在我们的实际业务当中,一个method既有前切,又有后切,那么相对于我们整个业务流程来说的执行顺序又是怎么样呐?


  • 这是在xml配置的对同一个切点的oder顺序
<aop:pointcut id="eu.digient.billfold.user.service.UserService.register"expression=
"execution(* eu.digient.billfold.user.service.UserService.register(..))"/><aop:advisor pointcut-ref="eu.digient.billfold.user.service.UserService.register"advice-ref="beforeInterceptorOne" order="1"/><aop:advisor pointcut-ref="eu.digient.billfold.user.service.UserService.register"advice-ref="beforeInterceptorTwo" order="2"/><aop:advisor pointcut-ref="eu.digient.billfold.user.service.UserService.register"advice-ref="afterInterceptorOne" order="1"/><aop:advisor pointcut-ref="eu.digient.billfold.user.service.UserService.register"advice-ref="afterInterceptorTwo" order="2"/>

  • beforeInterceptorOne

        handleBeforeInterceptorOne(user)User user = (User) invocation.proceed()
  • beforeInterceptorTwo

        handleBeforeInterceptorTwo(user)User user = (User) invocation.proceed()
    
  • afterInterceptorOne
        User user = (User) invocation.proceed()handleAfterInterceptorOne(user)
    
  • afterInterceptorTwo
        User user = (User) invocation.proceed()handleAfterInterceptorTwo(user)
    

    通过实际的运行程序,我们的trace显示执行顺序如下:


总结:

  1. oder的优先级顺序针对切面和切入方法来说是越小越先执行。
  2. spring aop就是一个同心圆,要执行的方法为圆心,最外层的order最小。
    参考:https://blog.csdn.net/hxpjava1/article/details/55504513

Spring AOP切面的执行顺序相关推荐

  1. spring AOP切面日志

    spring AOP切面日志 导入依赖 <properties><fastjson.version>1.2.49</fastjson.version> </p ...

  2. Spring AOP 切面@Around注解的具体使用

    @Around注解可以用来在调用一个具体方法前和调用后来完成一些具体的任务. 比如我们想在执行controller中方法前打印出请求参数,并在方法执行结束后来打印出响应值,这个时候,我们就可以借助于@ ...

  3. Spring AOP切面的时候参数的传递

    Spring AOP切面的时候参数的传递 Xml: <?xml version="1.0" encoding="UTF-8"?> <beans ...

  4. spring aop 切面添加日志

    这是一个非常简单的spring aop切面添加日志的程序,下面来看一下这个程序 1.程序使用jar包 2.切面类LoggingAspect.java package com.cailei.aop.as ...

  5. 【经典】Spring aop切面实现异步添加日志—完整版

    系统开发中我们常遇到要处理系统日志等信息的,在此我分享一篇 利用spring aop切面来异步添加日志的操作,其中用到了 队列和多线程,前面的博客有写. 第一步:创建log实体,根据自己业务而定, p ...

  6. Spring AOP 切面(Aspect)应用详解

    1. AOP 切面应用 下面是一个AOP切面的一个简单的应用实例 引入AOP依赖 <dependency><groupId>org.springframework.boot&l ...

  7. Spring AOP切面使用详细解析

    相关文章: SpringBoot AOP切面的使用 一步一步手绘Spring AOP运行时序图(Spring AOP 源码分析) 架构师系列内容:架构师学习笔记(持续更新)) Spring AOP 应 ...

  8. spring aop不执行_使用Spring AOP重试方法执行

    spring aop不执行 我的一位博客关注者发送了一封电子邮件,要求我显示" Spring AOP的RealWorld用法"示例. 他提到,在大多数示例中,都演示了Spring ...

  9. 使用Spring AOP重试方法执行

    我的一位博客关注者发送了一封电子邮件,要求我显示" Spring AOP的RealWorld用法"示例. 他提到,在大多数示例中,都演示了Spring AOP在日志记录方法进入/退 ...

  10. Spring aop切面插入事物回滚

    <!-- tx标签配置 事物--> <tx:advice id="txadvice" transaction-manager="transactionM ...

最新文章

  1. excel中如何筛选重复数据
  2. bucket sort count sort
  3. 三种不使用中间参数,交换两个参数的值的方法
  4. 论文浅尝 | 从具有数值边缘属性的知识图谱中学习嵌入
  5. php 类常量用法,php类常量用法实例分析
  6. 【渝粤教育】电大中专品牌管理与推广 (2)_1作业 题库
  7. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 14. ASP.NET Core Identity 入门
  8. SVN—如何安装SVN客户端软件
  9. 如何证明人的记忆力是无限的
  10. VS2008 ACtivex 制作CAB带 Vcredist_x86.exe 方案
  11. 水经注叠加cad_水经注CAD智能影像加载插件使用教程
  12. 在线问卷工具LimeSurvey
  13. Wap模拟器,pc端浏览器,手机wap网站,web项目
  14. Python使用requests设置headers、cookies实现猫眼实时电影票房排行榜爬取
  15. google 能翻译104个语言 youtube 仅仅不支持其中的15个语言 分别是这些
  16. VSCode插件---Code Runner
  17. 虚函数:多态的实现原理
  18. 【XR】VR手柄定位技术
  19. 客客威客系统,任务发布接受网站
  20. win10解决PL2303串口错误方法

热门文章

  1. 数字孪生智慧高铁研究案例
  2. 深度学习入门(看了就会)
  3. 《深度学习入门:基于Python的理论与实现》源代码
  4. bilibili缓存视频批量转换成mp4格式,方便学习
  5. English音标(全)与单词家园
  6. 2022年信息安全工程师考试知识点:计算机网络基本知识
  7. 海森矩阵的特征值和特征向量的物理意义推导
  8. IDA pro动态调试dex文件
  9. UiBot无法抓取Google Chrome元素和数据抓取工具无法使用的解决方案
  10. 程序员使用C#编写表白小软件(VS2013)(表白程序)