第2章 Aop简介

上传人:门**** 文档编号:243424514 上传时间:2024-09-23 格式:PPT 页数:22 大小:150.76KB
返回 下载 相关 举报
第2章 Aop简介_第1页
第1页 / 共22页
第2章 Aop简介_第2页
第2页 / 共22页
第2章 Aop简介_第3页
第3页 / 共22页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2017/11/20,添加页脚,#,第,2,章,AOP,Spring,不是因为会了才去做,而是因为做了才能会!,AOP,技术概述,AOP,概念,1.,面向方面编程,2.,作为,OO,面向对象的补充,而不是替代。,AOP,目标,1.,不改变现有代码,2.,给系统动态增加,横切关注点,。,设计原则,1.OCP,开闭原则,2.,针对接口,/,抽象编程,AOP,基本概念,核心关注点,业务功能。,切面,/,横切关注点,对日志安全等公共服务模块化,连接点,程序执行中的某个特定点。,切入点,设置加入切面位置的表达式,来匹配连接点。,通知,/Advice,将切面在某个连接点执行。,顾问,Advisor,切面,+,切入点,AOP,实现方式,JDK,动态代理,JDK1.4,后增加的内容。,只能,对实现了接口的类生成代理,,而不能针对类。,CGLIB,字节码增强,是,针对类实现代理,,主要是对指定的类生成一个子类,覆盖其中的方法。因为是继承,所以该类或方法最好不要声明成,final,ApectJ,支持方法拦截与属性修改,Spring AOP,只支持,方法拦截,。,spring,对,AOP,的支持,如果目标对象实现了接口,默认情况下会采用,JDK,的动态代理实现,AOP,目标对象实现了接口,也可以强制使用,CGLIB,实现,AOP,添加,CGLIB,库,,SPRING_HOME/cglib/*.jar,在,spring,配置文件中加入,如果目标对象没有实现接口,必须采用,CGLIB,库,spring,会自动在,JDK,动态代理和,CGLIB,之间转换,常见横切关注点,日志,事务,安全,异常处理,性能检测,Advice,MethodBeforeAdvice,前置通知,在业务方法执行之前执行,AfterReturningAdvice,后置通知,在业务方法执行之后执行,MethodInterceptor,环绕通知,在业务方法执行前后执行,甚至替代拦截的方法。,ThrowsAdvice,抛出异常时执行。,核心关注点,public class AopDemo implements IAopDemo,public void doSomething() throws Exception,System.out.println(Process Buniess!);,package com.lxt008.aop;,public interface IAopDemo,public void,doSomething,() throws Exception;,客户端,ApplicationContext ctx=,new,ClassPathXmlApplicationContext,(applicationContext.xml);,IAopDemo demo=(IAopDemo)ctx.,getBean,(aopDemo);,try,demo.doSomething();,catch(Exception e),System.out.println(Found Exception);,MethodBeforeAdvice,public class SecrityManager,implements,MethodBeforeAdvice,public void,before,(Method m,Object args,Object target),System.out.println(before Check!);,applicationContext.xml,被代理目标:,安全通知,:,ProxyFactoryBean,com.lxt008.aop.IAopDemo, secrityAdvice ,AfterReturningAdvice,public class LogManagerimplements,AfterReturningAdvice,public void,afterReturning,(Object returnValue,Method method,Object args, Object target) throws Throwable ,System.out.println(After Log!);,MethodInterceptor,public class PerformanceAroundAdvice implements,MethodInterceptor,public Object,invoke,(MethodInvocation invocation),throws Throwable ,Object returnValue=null;,/,开始计时,StopWatch sw = new,StopWatch,();,sw.start(invocation.getMethod().getName();,returnValue = invocation.proceed();,/,结束计时,sw.stop();,Method m = invocation.getMethod();,Object target = invocation.getThis();,Object args = invocation.getArguments();,MethodIntercepto,r,System.,out,.println();,System.,out,.println(,执行方法名,: + m.getName();,System.,out,.println(,目标类,: + target.getClass().getName();,if(args!=null) ,System.,out,.println(,参数列表,:);,for (int i = 0; i args.length; i+) ,System.,out,.print(,第, + i + ,个参数,: + argsi);,System.,out,.println();,System.,out,.println(,总时间,: +,sw.getTotalTimeMillis,() + ms);,return returnValue;,ThrowsAdvice,public class MyThrowsAdvice implements,ThrowsAdvice,public void,afterThrowing,(,Method method,Object args,Object target, Exception ex),System.,out,.println(,捕获其它不明异常,);,System.,out,.println(,异常发生方法,: + method.getName();,System.,out,.println();,修改,doSomething(),public void,doSomething,() throws Exception,System.,out,.println(Process Buniess!);,throw new Exception(unkown exception);,加入异常测试。,增加业务方法,引入,Advisor,Advisor,doSomething,RegexpMethodPointcutAdvisor,.*doSomething.*,RegexpMethodPointcutAdvisor,applicationContext.xml,com.lxt008.aop.IAopDemo,logAdvisor,secrityAdvisor,performanceAdvice,myThrowsAdvice,课程总结,AOP,技术概述,AOP,基本概念,AOP,实现方法,逐步重构理解,AOP,日志安全等,Demo,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!