SSM 学习03 面向切面编程(AOP)

AOP的目的,是让我们可以“专心做事”。

AOP的原理: 将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决。 采用代理机制组装起来运行,在不改变原程序的基础上对代码段进行增强处理,增加新的功能。

AOP是一种思想,它与具体的实现技术无关,任何一种符合AOP的思想的技术实现,都可以看做是AOP的实现。通过java的动态代理机制,就可以很容易实现AOP的思想,实际上Spring的AOP也是建立在Java的代理机制上。

AOP相关术语

增强(Advice): 又翻译成通知,定义了切面是什么以及何时使用,描述了切面要完成的工作和何时需要执行这个工作。是织入到目标类连接点上的一段程序代码。增强包含了用于添加到目标连接点上的一段执行逻辑,又包含了用于定位连接点的方位信息。又分前置增强、后置增强、环绕增强、异常抛出增强、最终增强等类型。

切入点(Pointcut): Advice定义了切面要发生“故事”和时间,那么切入点就定义了“故事”发生的地点。例如某个类或者方法名,Spring中允许我们使用正则来指定。

连接点(Joinpoint): 切入点匹配的执行点称作连接点。如果说切入点是查询条件,那连接点就是被选中的具体的查询结果。

切面(Aspect): 切点和增强组成切面。它包括了横切逻辑的定义,也包括了连接点的定义。

代理(Proxy): AOP框架创建的对象。

目标对象(Target):增强逻辑的织入的目标类。 织入(Weaving):将增强添加到目标类具体连接点上的过程。AOP有三种织入的方式:编译期织入、类装载期织入、动态代理织入(spring采用动态代理织入)。

面向切面编程主要关心两个问题 在什么位置,执行什么功能。

Spring AOP是负责实施切面的框架,即由Spring AOP完成织入工作。

经验分享 程序员 微信小程序 职场和发展