AOP的理解

AOP其实并不难,但是作为初学者,就不那么容易理解了。这里自己遇到了一点困惑,就记录一下吧。

什么是AOP

参考《Spring实战》

了解之前,先说说什么是横切关注点,什么是核心关注点。

在软件开发中,散落于应用中多处的功能被称为横切关注点。横切关注点可以被模块化为特殊的类(将那些多个类的公共部分,与业务无关,却为业务模块所共同调用的东西封装到一个可重用模块),即切面(Aspect)。

然后核心关注点,就是业务主要的功能。

Aop 的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。

为什么要这样做呢?

这样做有两个好处:首先,现在每个关注点都集中于一个地方,而不是分散到多处代码中;其次,服务模块更简洁,因为它们只
包含主要关注点(或核心功能)的代码,而次要关注点的代码被转移到切面中了。

AOP的理解

AOP相关概念

传送门https://blog.****.net/q982151756/article/details/80513340

Aspect(切面): Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。
Joint point(连接点):表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等。
Pointcut(切点):表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。
Advice(增强):Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。
Target(目标对象):织入 Advice 的目标对象.。
Weaving(织入):将 Aspect 和其他对象连接起来, 并创建 Adviced object 的过程。

AOP的理解