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(
切面
): 是切入点和通知(引介)的结合。