springaop学习小结

springaop学习小结

ID:35294940

大小:79.50 KB

页数:8页

时间:2019-03-23

springaop学习小结_第1页
springaop学习小结_第2页
springaop学习小结_第3页
springaop学习小结_第4页
springaop学习小结_第5页
资源描述:

《springaop学习小结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、一、AOP概念Joinpoint:它定义在哪里加入你的逻辑功能,对于SpringAOP,Jointpoint指的就是Method。Advice:特定的Jointpoint处运行的代码,对于SpringAOP来讲,有Beforeadvice、AfterreturningAdvice、ThrowAdvice、AroundAdvice(MethodInteceptor)等。Pointcut:一组Joinpoint,就是说一个Advice可能在多个地方织入,Aspect:这个我一直迷惑,它实际是Advice和Pointcut的组

2、合,但是SpringAOP中的Advisor也是这样一个东西,但是Spring中为什么叫Advisor而不叫做Aspect。Weaving:将Aspect加入到程序代码的过程,对于SpringAOP,由ProxyFactory或者ProxyFactoryBean负责织入动作。Target:这个很容易理解,就是需要Aspect功能的对象。Introduction:引入,就是向对象中加入新的属性或方法,一般是一个实例一个引用对象。当然如果不引入属性或者引入的属性做了线程安全性处理或者只读属性,则一个Class一个引用也是可以

3、的(自己理解)。Per-classlifecycleorper-instancelifecycle二、AOP种类1、静态织入:指在编译时期就织入Aspect代码,AspectJ好像是这样做的。2、动态织入:在运行时期织入,SpringAOP属于动态织入,动态织入又分静动两种,静则指织入过程只在第一次调用时执行;动则指根据代码动态运行的中间状态来决定如何操作,每次调用Target的时候都执行(性能较差)。三、SpringAOP代理原理SpringAOP是使用代理来完成的,Spring会使用下面两种方式的其中一种来创建代理:

4、1、JDK动态代理,特点只能代理接口,性能相对较差,需要设定一组代理接口。2、CGLIB代理,可代理接口和类(finalmethod除外),性能较高(生成字节码)。四、SpringAOP通知类型1、BeforeAdvice:前置通知需实现MethodBeforeAdvice,但是该接口的Parent是BeforeAdvice,致于什么用处我想可能是扩展性需求的设计吧。或者Spring未来也并不局限于Method的JoinPoint(胡乱猜测)。BeforeAdvice可以修改目标的参数,也可以通过抛出异常来阻止目标运行。

5、2、AfterreturningAdvice:实现AfterreturningAdvice,我们无法修改方法的返回值,但是可以通过抛出异常阻止方法运行。3、AroundAdvice:Spring通过实现MethodInterceptor(aopalliance)来实现包围通知,最大特点是可以修改返回值,当然它在方法前后都加入了自己的逻辑代码,因此功能异常强大。通过MethodInvocation.proceed()来调用目标方法(甚至可以不调用)。4、ThrowsAdvice:通过实现若干afterThrowing()来

6、实现。5、IntroductionInterceptor:Spring的默认实现为DelegatingIntroductionInterceptor五、SpringAOPPointcut以上只是Advice,如果不指定切入点,Spring则使用所有可能的Jointpoint进行织入(当然如果你在Advice中进行方法检查除外)。因此切入点在AOP中扮演一个十分重要的角色。Spring2.0推荐使用AspectJ的Annocation的切入点表达式来定义切入点,或者使用来定义AOP,这方面本篇不做考虑。

7、1、Pointcut:它是SpringAOPPointcut的核心,定义了getClassFilter()和getMethodMatcher()两个方法。2、ClassFilter:定义了matches(Classcls)一个方法。3、MethodMatcher()定义了matches(Method,Class),isRuntime(),matches(Mathod,Class,Object[])三个方法,如果isRuntime()返回true则表示为动态代理(实际是动态代理的动态代理),则调用第三个方法(每访问一次调用

8、一次),否则调用第一个方法(并且只调用一次)4、SpringAOP 静态切入点的几个实现。ComposablePointcut太复杂一个切入点无法表达就用这个,unionMethodMatcher和ClassFilter或者intersectionMethodMatcher、ClassFilter和Pointcut。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。