Spring AOP框架实现的结构分析.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 AOP框架实现的结构分析

本文的目标:? 从实现的角度来认识SpringAOP框架。? 观察的角度:? 从外部接口,内部实现,组成部分,执行过程四个方面来认识SpringAOP框架。? 本文的风格:? 首先列出AOP的基本概念;? 其次介绍框架所涉及到的核心组件列表,组件之间的结构关系图;? 然后细化结构图中的部分;? 接下来是一个简单的sample;? 最后是后记部分。? 注:? 1.本文的源代码基于Spring2.x。Spring的源代码也处于演变中,但对基础代码的影响并不大。? 2.本文是对Spring IoC容器实现的结构分析的姊妹帖。? 正文:? Spring AOP框架涉及的基本概念介绍:? 关注点(concern):一个关注点可以是一个特定的问题、概念、或是应用程序的兴趣区间--总而言之,应用程序必须达到的一个目标。? 核心关注点(core concern):业务功能模块,如:存款模块,取款模块,转账模块等,? 横切关注点(crosscutting concern):非功能性的、横切性模块,如:安全性管理,事务管理,性能监控等。? 面(aspect):一个面是对一个横切关注点的模块化,它将那些原本散落在各处的、用于实现这个横切点的代码归整到一处。? 连接点(join point):程序执行过程中的一点,如:? 字段访问:读、写实例变量;? 方法调用:对方法(包括构造方法)的调用;? 异常抛出:特定的异常被抛出。? 切入点(pointcut):一组连接点的总称,用于指定某个应该在何时被调用。切入点常用正则表达式或别的通配符语法来描述,有些AOP实现技术还支持切入点的组合。? (advice):在特定连接点执行的动作。很多AOP框架都以拦截器(interceptor)的形式来表现--所谓拦截器是这样的一个?对象:当连接点被调用时,它会收到一个回调消息。基本的有:? ?? 前(BeforeAdvice):在连接点调用之前,首先调用;? ?? 后(AfterAdvice):在连接点调用之后,再调用,在AspectJ中,又分为三种:? AfterReturningAdvice:在调用成功完成(没有异常抛出)之后。? AfterThrowingAdvice:在抛出某种特定类型(或其子类型)的异常之后。? AfterAdvice:在连接点的任何调用之后,不管调用是否抛出异常。? ? 环绕(AroundAdvice):这类可以完全控制执行流程。除了完成本身的工作之外,它还需要负责主动调用连接点,促使真实的操作发生(proceed)-- 这通常是通过调用某个特定的方法来完成的。? 引介(introduction):为一个现有的Java类或接口添加方法或字段。这种技术可以用于实现Java中的多继承,或者给现有对象模型附加新的API。? 混入继承(mixin inheritance):一个“混入类”封装了一组功能,这组功能可以被混入到现有的类当中,并且无须使用传统的继承手段。在AOP这里,混入是通过引介来实现的。在Java语言中,可以通过混入来模拟多继承。? 织入(weaving):将方面整合到完整的执行流程(或完整的类,此时被织入的便是引介中)。? 拦截器(initerceptor):很多AOP框架用它来实现字段和方法的拦截(interception)。随之而来的就是在连接点(如方法拦截)处挂接一条拦截器链(interceptor chain),链条上的每个拦截器通常会调用下一个拦截器。? AOP代理(AOP proxy):即被(advise)的对象引用--也就是说,AOP将在其上执行的这样一个对象引用。? 目标对象(target object):位于拦截器链末端的对象实例--这个概念只存在于那些使用了拦截机制的框架之中。? 注:上述概念描述引自《Expert One-on-One J2EE Development without EJB》中第八章对AOP概念描述部分,更多精彩部分可以参阅本章的完整内容。? 上述概念已被Spring AOP框架很好的实现,相关组件:? Advisor 组件,? Advice?? 组件,? Pointcut 组件,? Advised 组件,? AopProxy 组件,? AopProxyFactory 组件,? 图1.? ? 图1是对、切入点、、AOP代理之间依赖关系的全景图。? 和切入点组成一个面,面信息与目标对象信息被组织到Advised中,AopProxyFactory通过Advised中保存的信息生成AopProxy? 对象,调用AopProxy.getProxy()方法即可获得后的对象。? 这里要着重了解的是不同的子类型,不同的切入点子类型,? 对于不同的切入点子类型最重要的两种子类型:

文档评论(0)

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

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

1亿VIP精品文档

相关文档