Spring的AOP概述

Spring的一个非常重要的功能便是AOP

AOP全称为Aspect Oriented Programming

即:面向切面编程

AOP的功能简单来说就是将程序中的重复代码抽取出来,在需要执行的时候通过动态代理的方式,在不修改代码的基础上,实现对功能增强,提高程序的可用性,同时也能大大提高开发效率

AOP的作用:在程序运行过程中,在不修改源码的基础上实现功能增强

使用AOP的好处:

减少重复代码

提高开发效率

后期便于维护

 

AOP的相关术语

Joinpoint( 连接点 ):
所谓连接点是指那些被拦截到的点。在 spring , 这些点指的是方法 , 因为 spring 只支持方法类型的 连接点。
简单来说,接口中定义的方法即连接点
Pointcut( 切入点 ):
所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义。
可以简单的理解为那些被动态代理增强的方法
Advice( 通知 / 增强 ):
所谓通知是指拦截到 Joinpoint 之后所要做的事情就是通知。
通知的类型:前置通知 , 后置通知 , 异常通知 , 最终通知 , 环绕通知。
这里用一张图能更直观的看到不同通知所代表的意义
Introduction( 引介 ):
引介是一种特殊的通知在不修改类代码的前提下 , Introduction 可以在运行期为类动态地添加一些方 法或 Field
Target( 目标对象 ):
代理的目标对象。
Weaving( 织入 ):
是指把增强应用到目标对象来创建新的代理对象的过程。 spring 采用动态代理织入,而 AspectJ 采用编译期织入和类装载期织入。
Proxy (代理) : 一个类被 AOP 织入增强后,就产生一个结果代理类。
Aspect( 切面 ): 是切入点和通知(引介)的结合。