spring--day02总结.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
spring--day02总结

Hibernate day02 总结 AOP切面编程 什么是AOP AOP Aspect Oriented Programing 面向切面编程 AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码 经典应用:性能监视、事务管理、安全检查、缓存) Spring AOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类织入增强代码 AspectJ是一个基于Java语言的AOP框架,Spring2.0开始,Spring AOP引入对Aspect的支持,AspectJ扩展了Java语言,提供了一个专门的编译器,在编译时提供横向代码的织入 AOP专业术语 Joinpoint 连接点,所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法。 理解:可以被动态代理拦截目标类的方法 Pointcut 切入点,所谓切入点是指我们要对那些Joinpoint进行拦截。 理解:被拦截的连接点 Advice 通知,所谓通知是指拦截到Joinpoint之后所要做的事情。 理解:对切入点增强的内容 Introduction 引介,所谓引介是一种特殊的通知,在不修改类代码的前提下,引介可以在运行时动态添加一些方法或字段 理解:给目标添加新的方法和字段 Target 目标,代理的目标对象 Weaving 织入,指把增强代码应用到目标上,生成代理对象的过程 Proxy 代理,生成的代理对象 Aspect 切面,是切入点和通知的总和 AOP基础:代理模式 什么是代理模式 23种java常用设计模式之一。代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理的目的:进行功能增强(方法增强) 代理的模型结构 一个是真正的你要访问的对象(目标类),一个是代理对象 真正对象与代理对象实现同一个接口,先访问代理类再访问真正要访问的对象。 代理分类 静态代理 使用设计模式,完整目标代码的增强 动态代理 在运行时,对目标代码进行增强,需要借口 字节码增强(CGLIB) 在运行时,对目标代码进行增强,有类即可 CGLIB(Code Generation Library)是一个开源项目! 是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与实现Java接口。 字节码增强(JAVAssist) Javassist是一个开源的分析、编辑和创建Java字节码的类库。它已加入了开放源代码JBoss应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。 代理演示 目标对象 接口: package cn.itcast.a_proxy.a_init; public interface Target { public void sing(); } 实现类: package cn.itcast.a_proxy.a_init; public class TargetImpl implements Target { @Override public void sing() { System.out.println(刘德华唱歌); } }package cn.itcast.a_proxy.b_wrapper; import cn.itcast.a_proxy.a_init.Target; /** * class A implements B{ * private B b; * public A(B b){ * this.b = b; * } * ...method * } * 1、自定义类A需要实现接口B,实现的接口是需要增强类具有的接口 * 2、自定义类A需要一个可以接收接口B的实现类的构造方法 * 3、自定义类A需要将接口B的具体实现类缓存 * 4、实现需要增强的方法 close * 5、其他不需要增强的方法,直接调用接口B的具体实现类的方法 */ public class TargetWrapper implements Target { private Target target; //用户缓存目标对象实例 public TargetWrapper(Target target){ this.target = target; } @Override public void sing() { System.out.println(先给钱); //增强内容 this.target.sing(); //执行目标方法 } }package cn.itcast.a_proxy.b_wrap

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档