SpringAOP学习小结

一、AOP 概念 Joinpoint:它定义在哪里加入你的逻辑功能,对于Spring AOP,Jointpoint指的就是Method。 Advi__:特定的Jointpoint处运行的代码,对

一、AOP概念 Joinpoint:它定义在哪里加入你的逻辑功能,对于SpringAOP,Jointpoint指 的就是Method。 Advi__:特定的Jointpoint处运行的代码,对于SpringAOP来讲,有Before advi__、AfterreturningAdvi__、ThrowAdvi__、 AroundAdvi__(MethodInte__ptor)等。 Pointcut:一组Joinpoint,就是说一个Advi__可能在多个地方织入, Aspect:这个我一直迷惑,它实际是Advi__和Pointcut的组合,但是Spring AOP中的Advisor也是这样一个东西,但是Spring中___叫Advisor而不叫做 Aspect。 We__ing:将Aspect加入到程序代码的过程,对于SpringAOP,由 ProxyFactory或者ProxyFactoryBean负责织入动作。 Target:这个很容易理解,就是需要Aspect功能的对象。 Introduction:引入,就是向对象中加入新的属性或方法,一般是一个实例一个 引用对象。当然如果不引入属性或者引入的属性做了线程安全性处理或者只读属 性,则一个Class一个引用也是可以的(自己理解)。Per-classlifecycleor per-instan__lifecycle 二、AOP种类 1、静态织入:指在编译时期就织入Aspect代码,AspectJ好像是这样做的。 2、动态织入:在运行时期织入,SpringAOP属于动态织入,动态织入又分静动 两种,静则指织入过程只在第一次调用时执行;动则指根据代码动态运行的中间 状态来决定如何操作,每次调用Target的时候都执行(性能较差)。 三、SpringAOP代理原理 SpringAOP是使用代理来完成的,Spring会使用下面两种方式的其中一种来创 建代理: 1、JDK动态代理,特点只能代理接口,性能相对较差,需要设定一组代理接口。 2、CGLIB代理,可代理接口和类(finalmethod除外),性能较高(生成字节 码)。 四、SpringAOP通知类型 1、BeforeAdvi__:前置通知需实现MethodBeforeAdvi__,但是该接口的Parent 是BeforeAdvi__,致于什么用处我想可能是扩展性需求的设计吧。或者Spring 未来也并不局限于Method的JoinPoint(胡乱猜测)。BeforeAdvi__可以修改 目标的参数,也可以通过抛出异常来阻止目标运行。

腾讯文库SpringAOP学习小结