一、spring aop的概述
在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
二、spring aop的特点
- 在不改变原有功能代码的基础上扩展新的功能;
- 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率,方便代码的维护。
三、spring aop的相关术语
1、Joinpoint(连接点)
- 指那些被拦截的点,在spring中,这些点指的是方法,因为spring只支持方法类型的连接点。
2、Pointcut(切入点)
- 需要进行拦截的连接点的定义。
3、Advice(通知/增强)
定义:指拦截到Joinpoint之后所要做的事情就是通知。
通知类型
- 前置通知:在切入点方法执行之前执行。
- 后置通知:在切入点方法正常执行之后执行。它和异常通知永远只能执行一个。
- 异常通知:在切入点方法执行产生异常之后执行。它和后置通知永远只能执行一个。
- 最终通知:无论切入点方法是否正常执行它都会在其后面执行。
- 环绕通知:使用手动编写代码的方式设置前置通知、后置通知、异常通知和最终通知。
注意:使用环绕通知可以明确指定各种通知在何时执行。
4、Introduction(引介)
- 是一种特殊的通知在不修改类代码的前提下, 可以在运行期为类动态地添加一些方法或Field。
5、Target(目标对象)
- 代理的目标对象。
6、Weaving(织入)
- 指把增强应用到目标对象来创建新的代理对象的过程。spring采用动态代理织入,而AspectJ采用编译期织入和类装载期织入。
7、Proxy(代理对象)
- 一个类被AOP织入增强后,就产生一个结果代理类。
8、Aspect(切面)
- 是切入点和通知(引介)的结合。