ch_spring_aop_声明式事务.pptVIP

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

Spring与AOP Java代理模式 作用:为其他对象提供一种代理以控制对这个对象的访问。也就是在某些情况下客户不想或不能直接引用一个对象,而代理对象可以在客户和目标对象之间起到中介作用,去掉客户不能看到的内容和服务或增添客户需要的额外服务。 代理模式的角色 抽象角色:声明真实对象和代理对象的共同接口; 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。 真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。 动态代理 如果要按照上述的方法使用代理模式,那么真实角色必须是事先已经存在的,并将其作为代理对象的内部属性。但是实际使用时,一个真实角色必须对应一个代理角色,如果大量使用会导致类的急剧膨胀;此外,如果事先并不知道真实角色,该如何使用代理呢?这个问题可以通过Java的动态代理类来解决 Java动态代理类位于Java.lang.reflect包下,一般主要涉及到以下几个类和接口 class Proxy: interface InvocationHandler: class Method: 动态代理API Proxy:该类即为动态代理类,作用类似于DeptServiceProxy类,使得程序在运行时动态创建代理对象 方法 static Object newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h):返回实现接口的代理类的一个实例,返回后的代理类可以当作被代理类使用(可使用被代理类的在Subject接口中声明过的方法)。ClassLoader:代理类的类加载器,interfaces代理类实现的接口列表,InvocationHandler 处理接口 InvocationHandler: 调用处理接口,当系统有了一个代理对象以后,对目标对象的方法调用会首先分派给一个调用处理器 该接口中仅定义了一个方法 object invoke(Object obj,Method method, Object[] args)。在实际使用时,第一个参数obj一般是指代理类,method是被代理的方法,如上例中的request(),args为该方法的参数数组。这个抽象方法在代理类中动态实现。返回一个Object Method: 接口或类的方法信息 方法: invoke(Object obj,Object… args): 调用obj对象的方法,参数为args 动态代理类 所谓动态代理( Dynamic Proxy)类其实是这样的一种类: 它是在运行时动态生成的类,但生成这样的类的前提是必须提供一组接口,然后该类就表示实现了这些接口。 动态代理类不会做什么实质性的工作,所以生成时必须提供一个handler给它,由handler做实质性的工作 步骤 创建被代理类(代理的目标对象)和接口 创建一个实现InvocationHandler接口的类( 真正的调用被代理类/目标对象的方法) 创建一个代理类: 通过Proxy.newProxyInstance()方法得到 通过代理调用方法 注意: SUN 提供的API动态代理类只能代理接口 AOP简介 AOP(Aspect Oritented Pragramming): 面向切面 / 方面 编程 AOP从程序的运行角度考虑程序的结构,提取业务处理过程的切面。AOP面向程序运行中各个步骤,以期待降低各步骤之间的耦合,从而提高步骤之间的隔离。 OOP时静态的抽象,它对应用中的实体及属性、行为进行抽象,从而获得清晰高效的单元划分。而AOP时动态的抽象,它对应用过程的步骤进行抽象,从而获得步骤之间的逻辑划分。AOP框架并不与特定的代码耦合,能处理程序执行中特定点,而不是某个具体的程序。 AOP不会取代OOP,而是作为OOP的补充 AOP AOP的术语 横切性关注点(Cross cutting concern): 分布在程序的各个地方,和业务没有关系,人为的在程序过程中加入(切入)的,比如记录日志、权限检查、安全性检查、事务等等,横切性的问题 切面(Aspect): 关注点的模块化, 如ServicesHandler 通知(Advice): 对关注点的具体实现,如 securityCheck() 前置通知(BeforeAdvice): 在方法之前执行 后置通知(AfterAdvice): 在方法之后执行 环绕通知(AroundAdvice) 等等 切入点(Pointcut):系列关注点的集合,如所有的以add打头的方法,AOP允许用户自定义

文档评论(0)

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

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

1亿VIP精品文档

相关文档