Spring学习(五)-- AOP 基本概念

2021-11-16  本文已影响0人  MikeShine

1. 写在前面

在之前的学习中,我们对 IOC 相关的内容进行了学习。知道了 IoC 是为了达到解耦合,将Bean之间的控制权交出给第三方的 IoC 容器;也学习了相关的 IoC 高级用法。
下面我们一起看一下,Spring 中另外一个比较重要的概念—AOP(Aspect Oriented Programming,面向切面编程)。


2. 几个概念

2.1 为什么要有 AOP

这里直接看几张图就可以说明问题:


两个有类似功能的类

其实,如果这里将“检测活动有效性”“检测活动xxx”抽取出来,作为公共方法去引入,也是可以的。
但是,为了方便起见,我们并不愿意这么做。而是做了一个切面。


AOP切面
这样一来,只需要在需要使用的地方直接注入即可。
这就是AOP最原始的出发点。

2.2 AOP 相关概念

2.2.1 专业概念

首先,在AOP这里有一些专业的概念定义:

2.2.2 举一个栗子

这里我们可以通过一个例子来生动的理解这些概念:

夜黑风高杀人夜,在一个叫做 爪哇 的县城发生了一起命案。目击者称,凶手是个男性,身高1.75米。公安局长根据目击者的证词,对所有公安下令:将所有身高1.75米的男性都抓过来审问。公安根据命令,将所有符合条件的人都抓了起来。

将上述的概念和这个例子对应起来:

这里有一个示意图,需要理解一下:


AOP概念
2.2.3 其他概念
Spring 中支持的 JointPoint类型

理论上来说,AOP 中 支持的 JointPoint 的类型有多种:构造方法调用、字段设置和获取(get/set)、方法调用、方法执行、异常处理、类的初始化 等等。
但是,在 Spring 中,只支持 方法执行 类型的 JointPoint

Advice 类型
上一篇下一篇

猜你喜欢

热点阅读