Spring的AOP概述

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

AOP全称为Aspect Oriented Programming

即:面向切面编程

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

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

使用AOP的好处:

减少重复代码

提高开发效率

后期便于维护

 

AOP的相关术语

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