Spring

AOP中,有Before advice和After advice,这两个advice从字面上就可以很容易理解,但是Around

advice就有点麻烦了。

乍一看好像是Before

advice和After

advice的组合,也就是说pointcut会在joinpoint执行前后各执行一次。但是这种理解是不正确的,如果这样理解的话,就会产生这样的疑问:spring aop

Around类型为什么只执行一次,这个帖子是我碰巧看到。

那么怎么样理解才是正确的呢?我们来看一下Spring官方是怎么解释Around

advice的:

Around advice

runs "around" a matched method execution. It has the opportunity to

do work both before and after the method executes, and to determine

when, how, and even if, the method actually gets to execute at all.

Around advice is often used if you need to share state before and

after a method execution in a thread-safe manner (starting and

stopping a timer for example).

大概的意思就是说,Around

advice可以通过一个在joinpoint执行前后做一些事情的机会,可以决定什么时候,怎么样去执行joinpoint,甚至可以决定是否真的执行joinpoint的方法调用。Around

advice通常是用在下面这样的情况:

在多线程环境下,在joinpoint方法调用前后的处理中需要共享一些数据。如果使用Before

advice和After

advice也可以达到目的,但是就需要在aspect里面创建一个存储共享信息的field,而且这种做法并不是线程安全的。

现在,明白Spring设计Around

advice的目的之后,我们来看下具体的用法。

import

org.aspectj.lang.annotation.Aspect;

import

org.aspectj.lang.annotation.Around;

import

org.aspectj.lang.ProceedingJoinPoint;

@Aspect

public class AroundExample

{

@Around("com.xyz.myapp.SystemArchitecture.businessService()")

public Object

doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable

{

// start stopwatch

相当于是before

advice

Object retVal = pjp.proceed();

// stop stopwatch  相当于是after

advice

return retVal;

}

}

现在大家看明白了吧,并不是在joinpoint执行前后各调用一次pointcut,而是在pointcut中把joinpoint给around起来。

java @around_正确理解Spring AOP中的Around advice相关推荐

  1. 正确理解Spring AOP中的Around advice

    Spring AOP中,有Before advice和After advice,这两个advice从字面上就可以很容易理解,但是Around advice就有点麻烦了. 乍一看好像是Before ad ...

  2. java方法设置切点_java相关:Spring AOP中定义切点的实现方法示例

    java相关:Spring AOP中定义切点的实现方法示例 发布于 2020-6-6| 复制链接 摘记: 本文实例讲述了Spring AOP中定义切点的实现方法.分享给大家供大家参考,具体如下:一 配 ...

  3. 彻底理解Spring AOP

    目录 前言 1. AOP概念 2. AOP的实现 3. Spring的IoC理解: 4. Sping知识整理 前言 AOP英文名为Aspect Oriented Programming,意为面向切面编 ...

  4. 如何理解 Spring AOP 以及使用 AspectJ?

    作者 | 阿文 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 在 Spring 中 AOP 是一个非常非常重要的概念,那么什么是AOP呢? AOP 即面向切面编程,也可以叫做面向方向编 ...

  5. Spring AOP中定义切点PointCut详解

    1.AOP是什么? 软件工程有一个基本原则叫做"关注点分离"(Concern Separation),通俗的理解就是不同的问题交给不同的部分去解决,每部分专注于解决自己的问题.这年 ...

  6. 第十篇 Spring AOP中Load Time Weaver

    文章目录 前言 一.先聊Load Time 二.再说Weaver 三.回看Load Time Weaver 四.LTW初始化过程 1.激活 2. Weave过程 总结 前言 本文介绍Spring AO ...

  7. Spring AOP中Pointcut,dvice 和 Advisor三个概念

    Spring  AOP中Pointcut,dvice 和 Advisor三个概念介绍 在理解了Spring的AOP后,需要重点理解的三个概念是:Pointcut    Advice   Advisor ...

  8. spring aop中pointcut表达式

    spring aop中pointcut表达式 本文主要介绍spring aop中9种切入点表达式的写法 execute within this target args @target @within ...

  9. Spring AOP中定义切点(PointCut)和通知(Advice)

    本文讨论一下Spring AOP编程中的两个关键问题,定义切点和定义通知,理解这两个问题能应付大部分AOP场景. 如果你还不熟悉AOP,请先看AOP基本原理,本文的例子也沿用了AOP基本原理中的例子. ...

最新文章

  1. 编译安装LAMP之配置httpd以FastCGI方式与php整合
  2. linux 里常用的几个查找命令
  3. 如何解决大量字段的录入交互界面的设计呢?
  4. Scala入门到精通——第十三节 高阶函数
  5. 【RESTful风格】软件接口设计中RESTful风格
  6. 信息学奥赛一本通(2066:【例2.3】买图书)
  7. 小红书疑似被下架 官方回应正在积极沟通
  8. 《Cisco IOS XR技术精要》一2.7 高可用架
  9. matlab liccode,车牌识别的matlab程序--(详细注释,并有使用注意点)
  10. ORACLE利用scn赚钱,在Oracle中增进SCN及案例介绍
  11. Springboot在线电影订票系统
  12. ECharts学习--雷达图
  13. 程序员应该掌握的英语词汇
  14. blowfish算法c语言,Blowfish 算法工具(Blowfish Tool)
  15. React.Children.only expected to receive a single React element child.【react-transition-group】
  16. 已解决【Watch检查软件更新失败,因为你尚未接入互联网。】
  17. 【微信公众号】获取获取微信的access_token
  18. 东北大学计算机保研清华难吗,学霸宿舍:他们全部保研清华、中科院、东大等名校,值得借鉴!...
  19. 【后续还会补充】Sublime Text 4 常用插件安装及配置方法
  20. 我国传统长度单位c语言,标准长度单位换算c程序设计方案书.doc

热门文章

  1. 2022-06-06 FUSE用户态文件系统
  2. Windows10下安装VS2015和Caffe
  3. mavenmaven项目配置maven私服,从私服下载jar
  4. ps打不开图片显示计算机丢失,电脑的ps软件打不开图片怎么解决
  5. linux获取本地ip
  6. 利用全球定位改进导航
  7. bigemap如何应用卫星图像到Auto CAD
  8. 欧盟通用数据保护条例GDPR.docx数据摘要 导读:GDPR通用数据保护条例中文版由中国政法大学互联网金融法律研究院组织翻译, 新法案由11章共99条组成。 GDPR的通过意味着欧盟对个人信息保
  9. Office 顿号怎么输
  10. IDC云灾备白皮书:云灾备支持未来业务持续性新需求