【Spring源码】Spring AOP的核心概念

有目标就不怕路远。年轻人.无论你现在身在何方.重要的是你将要向何处去。只有明确的目标才能助你成功。没有目标的航船.任何方向的风对他来说都是逆风。因此,再遥远的旅程,只要有目标.就不怕路远。没有目标,哪来的劲头?一车尔尼雷夫斯基

导读:本篇文章讲解 【Spring源码】Spring AOP的核心概念,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

废话版

什么是AOP

关于什么是AOP,这里还是要简单介绍下

AOP,Aspect Oriented Programming,面向切面编程,通过预编译和运行期间提供动态代理的方式实现程序功能的统一维护,使用AOP可以降低各个部分的耦合度,提高代码质量

【Spring源码】Spring AOP的核心概念

重要概念

  • JoinPoint 连接点:程序执行的某个特定位置

  • PointCut 切点:执行的具体位置(哪些方法要执行)

  • Advice 增强:额外的业务逻辑

  • Aspect 切面:切点+增强

人话版

这些都是比较正式的定义,为了便于理解,用我们身边前一段的状况举个简单的🌰来描述下AOP到底是用来干嘛以及这些重要概念到底指的是什么吧

俺叫李四,是一只打工崽,俺的一天是这样的:

上班离开居住的小区,进入上班的写字楼,中午去办公楼对面街的小饭馆恰饭,晚上下班离开写字楼,进小区回家

井然有序,而且成年累月几乎不会有什么大改变,

忽然,XXX流感😷开始蔓延起来了,于是在写字楼、小饭店这些公共场合的门口都增加了一个进入需要【扫🐎看🐎】的流程(还好出入小区不用),于是,俺的一天变成了这样:

上班离开居住的小区,【扫🐎看🐎】进入上班的写字楼,中午去办公楼对面街的小饭馆【扫🐎看🐎】恰饭,晚上下班离开写字楼,进小区回家

于是——

进出小区、进出写字楼、进出恰饭的小饭店,这些所有可能会增加“额外的业务逻辑”的地方——Join Point 连接点

【扫🐎看🐎】的流程就是俺日常生活以外的部分,即“额外的业务逻辑”——Advice 增强

写字楼、恰饭的小饭店,真实增加了【扫🐎看🐎】这个额外的业务逻辑”的地方——Point Cut 切点

不知道有没有客官注意到,真实的情况是:只有进入这些场所的时候需要【扫🐎看🐎】,离开是不需要的,而切点只标明了位置,那么哪里对“进入”还是“离开”需要【扫🐎看🐎】做出了限制🚫呢?

自问自答:Advice 增强

因为Spring AOP中的Advice其实也是有分类的,我们可以直接通过源代码进行查看

【Spring源码】Spring AOP的核心概念

可以看到,抽象类AbstractAspectJAdvic有5个的实现类:

  • AspectJAfterAdvice 后置通知

  • 方法退出的时候执行,不论是正常返回还是异常退出都会执行

  • AspectJAfterReturningAdvice 返回后通知

  • 方法退出的时候执行,只有方法正常完成后执行

  • AspectJAfterThrowingAdvice 抛出异常后通知

  • 方法退出的时候执行,只有方法抛出异常退出时执行

  • AspectJAroundAdvice 环绕通知

  • 可以将要执行的方法(point.proceed())进行封装📦,可在其前后添加需要执行的操作

  • AspectJMethodBeforeAdvice 前置通知

  • 方法调用前执行

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/135360.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!