欢迎来到天天文库
浏览记录
ID:36317044
大小:503.50 KB
页数:24页
时间:2019-05-09
《sshspring面向切面编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、面向切面编程主讲人:孙鑫http://www.sunxin.orgAOP介绍AOP全称是AspectOrientedProgramming,中文翻译为面向切面编程。http://www.sunxin.orgAOP术语Aspect(切面),切面就是你要实现的横切功能。Jointpoint(连接点),连接点是应用程序执行过程中插入切面的地点(执行点)。这个地点可以是方法调用,异常抛出,或者甚至是要修改的字段。切面代码在这些地方插入你的应用流程中,添加新的行为。Advice(通知),通知是切面的实际实现。它通知应用系统新
2、的行为。在日志例子中,日志通知(loggingadvice)包含了实际实现日志功能的代码,例如向日志文件中写日志。通知在连接点被插入到应用程序。PointCut(切入点),切入点定义了通知应该应用到哪些连接点。通知可以应用到AOP框架支持的任何连接点。Introduction(引入),引入允许你为已经存在的类添加新方法和属性。TargetObject,目标对象,即被代理的对象。AOPProxy,AOP代理。代理是将通知应用到目标对象后创建的对象。AOP代理,AOP框架创建的对象,包含通知。在Spring中,AOP代
3、理可以是JDK动态代理或者CGLIB代理。Weaving(织入),织入是将切面应用到目标对象从而创建一个新的代理对象的过程。切面在指定的连接点被织入到目标对象中。分为静态织入(AspectJ)和动态织入(SpringAOP)。http://www.sunxin.orghttp://www.sunxin.orgSpring中的通知类型通知类型接口说明Beforeorg.springframework.aop.BeforeAdvice在目标方法被调用之前调用Afterorg.springframework.aop.Af
4、terReturningAdvice在目标方法被调用之后调用Aroundorg.aopalliance.intercept.MethodInterceptor拦截对目标方法的调用Throwsorg.springframework.aop.ThrowsAdvice当目标方法抛出异常时调用Introdcutionorg.springframework.aop.IntroductionInterceptor引入整个类http://www.sunxin.orgBeforeAdviceMethodBeforeAdvice在方
5、法调用之前被调用,这样的Advice不能够阻止方法调用的进行,除非它抛出一个异常。MethodBeforeAdvice接口只有一个方法:voidbefore(Method method,Object[] args,Object target)throwsThrowable参数method表示被调用的方法,参数args表示被调用方法的参数,参数target表示方法调用的目标,可以是null。注意返回的类型是void。Before通知可以在连接点执行之前插入自定义的行为,但是不能改变返回值。如果一个beforeadvi
6、ce抛出一个异常,这将中断拦截器链进一步的执行。这个异常将沿着拦截器链向上传播。如果这个异常是unchecked的(RuntimeException),或者出现在被调用方法的签名中(即目标方法声明抛出的异常),那么它将会被直接传递给客户代码;否则,它将被AOP代理包装到一个unchecked的异常中。Beforeadvice可以和任何切入点一起使用。http://www.sunxin.orgAfterReturningadviceAfterreturningadvice只有在方法正常返回时被调用,如果方法执行抛出了
7、异常,那么该advice将不会被调用。这样的advice可以看见返回值,但是不能改变它。Afterreturning通知可以访问返回值(不能改变)、被调用的方法、方法的参数和目标对象。AfterReturningAdvice接口只有一个方法:voidafterReturning(Object returnValue,Method method,Object[] args,Object target)参数returnValue表示方法的返回值,method表示被调用的方法,参数args表示被调用方法的参数,参数tar
8、get表示方法调用的目标,可以是null。Afterreturningadvice不会改变执行的路径。如果它抛出一个异常,这个异常将取代返回值沿着拦截器链被向上抛出。Afterreturningadvice可以和任何切入点一起使用。http://www.sunxin.orgInterceptionaroundadviceSpring中最基本的advice类型
此文档下载收益归作者所有