欢迎来到天天文库
浏览记录
ID:22624691
大小:592.20 KB
页数:36页
时间:2018-10-30
《spring--day02总结.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Hibernateday02总结1AOP切面编程1.1什么是AOP•AOPAspectOrientedPrograming面向切面编程■AOP采取横句抽取机制,取代了传统纵向继承体系重复性代码■经典应用:性能监视、事务管理、安全检查、缓存)•SpringAOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向0标类织入增强代码•AspectJ是一个基于Java语言的AOP框架,Spring2.0开始,SpringAOP引入对Aspect的支持,AspectJ扩展了Java语言,提供了一个专门的编译器,在编译时提供横向代
2、码的织入1.2AOP专业术语•Joi叩oint连接点,所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法。■理解:可以被动态代理拦截目标类的方法•Pointcut切入点,所谓切入点是指我们要对那些Joi叩oint进行拦截。■理解:被拦截的连接点•Advice通知,所谓通知是指拦截到Joinpoint之后所要做的事情。■理解:对切入点增强的内容•Introduction引介,所谓引介是一种特殊的通知,在不修改类代码的前提下,引介可以在运行时动态添加一些方法或字段■理解:给目标添加新的方法和字段•Target目标,代理的目标对象•
3、Weaving织入,指把增强代码应用到目标上,生成代理对象的过程•Proxy代理,生成的代理对象•Aspect切而,是切入点和通知的总和1.3AOP基础:代理模式1.3.1什么是代理模式•23种java常用设计模式之一。代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。•代理的目的:进行功能增强(方法增强)13.2代理的模型结构一个是真正的你要访M的对象(目标类),一个是代理对象真正对象与代理对象实现同一个接口,先访问代理类
4、再访问真正要访问的对象。1.3.3代理分类•静态代理■使用设计模式,完整目标代码的增强•动态代理■在运行时,对目标代码进行增强,需要借口•字节码增强(CGLIB)■在运行吋,对目标代码进行增强,有类即可■CGLlB(CodeGenerationLibrary)是一个开源项目!■是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与实现Java接口。•字节码增强(JAVAssist)■Javassist是一个开源的分析、编辑和创建Java字节码的类库。它已加入了开放源代码JBoss应用服务器项目,通过使用Javassis
5、t对字节码操作为JBoss实现动态AOF框架。1.3.4代理演示1.3.4.1目标对象接口:packagecn.itcast.a_proxy.a_init;publicinterfaceTarget{publicvoidsing();1实现类:packagecn•itcast.a_proxy•a_init;publicclassTargetlmplimplementsTarget{^Overridepublicvoidsing(){System.ot/t.printIn(••刘德华唱歌••);}}1.3.4.2静态代理代理对象:package
6、cn.itcast•a_proxy.b一wrapper;importcn•itcast•a_proxy.a_init.Target;/**一一*classAimplementsB{*privateBb;*publicA(Bb){*this.b=b;*}*••.method*}*1、自定义类A需要实现接口B,实现的接口是需要增强类具有的接口*2、自定义类A需要一个可以接收接OB的实现类的构造方法*3、自定义类A需要将接口B的具休实现类缓存*4、实现需要增强的方法close*5、其他不需要增强的方法,直接调用接口B的具休实现类的方法*/publi
7、cclassTargetWrapperimplementsTarget{privateTargettarget;//用户缓存口标对象实例publicTargetWrapper(Targettarget){this.target=target;}@Overridepublicvoidsing(){//增强内容this,target•sing();//执行口标方法}}测试packagecn•itcast•a_proxy.b_wrapper;importcn•itcast.a_proxy.a_init.Target;importcn•itcast•
8、a_proxy•a_init•TargetImpl;publicclassApp{publicstaticvoidmain(String[]args){Target
此文档下载收益归作者所有