加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 服务器 > 系统 > 正文

Spring系列之AOP的理解和实践

发布时间:2021-06-02 08:47:15 所属栏目:系统 来源:互联网
导读:1 什么是AOP? 1.1 概念介绍 Spring的使命是简化Java代码开发,aop作为Spring的一个子模块,也不例外。 AOP 是 Aspect Oriented Programming(面向切面编程) 的简
1 什么是AOP? 1.1 概念介绍

Spring的使命是简化Java代码开发,aop作为Spring的一个子模块,也不例外。

AOP 是 Aspect Oriented Programming(面向切面编程) 的简称,和OOP(面向对象编程)一样是一种编程思想,是对OOP的一种补充。

如何理解什么是AOP呢?以日志为例,在很多管理系统,比如订单系统、推送系统等等都需要把日志记录下来。如果每个业务逻辑里面都写日志的相关代码,那就重复太多了。

干脆把日志的相关逻辑代码,统一封装起来。然后在需要的地方嵌入即可。AOP也主要就是做嵌入这件事的。看下面这张图。

新增订单编辑订单取消订单推送订单日志事务

AOP旨在将横切关注点(crosscutting concern)从业务主体逻辑中进行剥离,实现关注点分离,以提高程序的模块化程度(及业务模块只需关注业务逻辑,无需关注日志、安全、事务等通用逻辑)

上面提到了一些名词,比如说,切面、关注点、横切等,下面对这些名词进行解释。

1.2 名词解释

AOP有自己的一套术语,我们必须了解一下这些行话,才能更好地理解AOP。为了方便大家理解,下面将用课代表收作业作为例子。

通知 (Advice)

定义了在收作业前后需要做的事。常见的通知类型有:before、after、after-returning、around等。

连接点 (JoinPoint)

连接点指程序运行时允许插入切面的一个点,可以是一个函数、一个包路径、一个类、或者抛出的异常。有点类似于可以收作业的时间点。

切点(PointCut)

切点用于定义切面的位置,也就是捕获哪些连接点的调用然后执行"通知"的操作(什么地点)。

切面(Aspect)

切面是切点和通知的聚合,定义了在哪一个切点做什么通知。

目标对象( Target )

指被切面织入的对象。

引入(Introduction)

引入允许我们向现有的类添加新方法或属性。

织入(Weaving)

织入是把切面应用到切点对应的连接点的过程。切面在指定连接点被织入到目标对象中。

具体关系使用图形化表示是:

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读