AOP (Aspect Oritented Programming)
允许将代码插入到方法的调用过程中。
在不修改类代码的情况下,提供类似拦截器的功能。
AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面。
AOP是动态的抽象。对应用执行过程中的步骤进行抽象。能处理程序执行的特定点,而不是具体的程序。
AOP中的基本概念
Aspect(切面):业务流程运行的某个特定步骤,也就是应用运行过程中的关注点,关注点可能横切多个对象,所以常常也称为横切关注点。
Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在Spring中,这些点指的是方法,因为Spring只支持方法类型的连接点,实际上Joinpoint还可以是field或类构造器)。
Advice(增强处理):AOP框架在特定的切入点执行的增强处理。处理有“around”、“before”、“after”等类型。
Pointcut(切入点):可以插入增强处理的连接点。即当某个连接点满足指定要求时,该连接点将被添加增强处理,该连接点也就变成了切入点。
Introduction(引入):在不修改类代码的前提下, 在运行期间动态地添加方法或字段到类中。
Target(目标对象):被AOP框架进行增强处理的对象,也被称为被增强的对象。
Weave(织入):将增强处理添加到目标对象中,并创建一个被增强的对象(AOP代理)的过程就是织入。
Spring切面可以执行一下五种类型的通知:
-
before(前置通知):在一个方法之前执行的通知。
-
after(最终通知):当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。
-
after-returning(后置通知):在某连接点正常完成后执行的通知。
-
after-throwing(异常通知):在方法抛出异常退出时执行的通知。
-
around(环绕通知):在方法调用前后触发的通知。