spring实践:aop-java开发java经验技巧

spring实践:aop-java开发java经验技巧

ID:30789624

大小:205.53 KB

页数:16页

时间:2019-01-03

spring实践:aop-java开发java经验技巧_第1页
spring实践:aop-java开发java经验技巧_第2页
spring实践:aop-java开发java经验技巧_第3页
spring实践:aop-java开发java经验技巧_第4页
spring实践:aop-java开发java经验技巧_第5页
资源描述:

《spring实践:aop-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Spring实践:AOP-编程开发技术Spring实践:AOP原文出处:翡青AOP引介AOP(^AspectOrientedPrograming)面向切面编程采用横向抽取机制,以取代传统的纵向继承体系的重复性代码(如性能监控/事务管理/安全检杳/缓存实现等).横向抽取代码复用:基于代理技术,在不修改原来代码的前提下,对原有方法进行增强.SpringAOP历史•1.2开始,Spring开始支持AOP技术(SpringAOP)SpringAOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类织入增强代码.•2.0之后,为了简化AOP开发,

2、Spring开始支持Aspect;(—个基于Java的AOP框架)框架.AOP相关术语术语中文描述JoinpointPointcutAdvice连接指那些被拦截到的点.在Spring中,这些点指方法(因为Spring只支持方法点类型的连接点).切:指需要(配置)被增强的Joinpoint.点通知/指拦截到Joinpoint后要做的操作.通知分为前置通知/后置通知/界常通知/增强最终通知/环绕通知零.Aspect切面切入点和通知的结合.Target目标对象需要被代理(增强)的对象.Proxy代理对象日标对象被AOP?织入?增强/通知后产生的对象术语中文描述Weavin

3、g指把增强/通知应川到目标对象來创建代理对象的过程(Spring采川动态代理织入,Aspect;采用编译期织入和类装载期织入).Introduction»入一种特殊通知,在不修改类代码的前提下,可以在运行期为类动态地添加引介一些Method/Field(不常用).其他关于AOP理论知识可参考AOP技术研究.AOP实现SpringAOP代理实现冇两种:JDK动态代理和Cglib框架动态代理,JDK动态代理可以参考博客代理模式的动态代理部分,在这里仅介绍CGLib框架实现.cglib动态代理cglib(CodeGenerationLibrary)是一个开源/高性能/高质

4、量的Code生成类库,可以在运行期动态扩展Java类与实现Java接口.cglib比java.lang,reflect.Proxy更强的在于它不仅可以接管接口类的方法,还可以接管普通类的方法(cglib项口)•从3.2开始,spring-core包屮内置cglib类,因此可以不用添加额外依赖.•UserDAO(并没有实现接口)/***@authorjifang*©since16/3/3上午11:16.*/publicclassUserDAO{publicvoidadd(Objecto){System,out.printIn("UserDAO->Add:"+o.toS

5、tringO);}publicvoidget(Objecto){System,out.println(,zUscrDAO->Get:"+o.toString());•CGLibProxyFactorypublicclassCGLibProxyFactory{privateObjecttarget;publicCGLibProxyFactory(Objecttarget){this.target二targct;}privateCallbackcallback二newMethodinterceptor(){/****©paramobj代理对彖*@parammethod当

6、期调用方法*@paramargs方法参数*@paramproxy被调用方法的代理对象(用于执行父类的方法)*©return*©throwsThrowable*/©OverridepublicObjcctintcrccpt(Objcctobj,Methodmethod,Objcct[]args,MethodProxyproxy)throwsThrowable{//前置增强System,out.println(〃+BeforeAdvice•••〃);//执行目标方法//Objectresult=method,invoke(target,args);Objectresul

7、t二proxy•invoke(target,args);//后置增强System,out.printin(〃+AfterAdvice•••〃);returnresult;}};publicObjectcreateProxy(){//1.创建Enhancer对象Enhemcorenhemcor二newEnhemcor();//2.eglib创建代理,对目标对彖创建子对彖enhancer.setSuperclass(target.getClass());//3.传入回调接口,对目标增强enhancer.setCallback(callback);returnenha

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

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

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