AOP@Work: AOP和元数据:完美的匹配,第1部分 - 编程入门网
语言扩展的内容。
在下一节中,我将快速地回顾 AOP 的连接点模型(join point model)的基 本内容,然后说明是如何用元数据增强它。 AOP@Work: AOP和元数据:完美的匹配,第1部分(3)时间:2011-09-04 IBM Ramnivas Laddad元数据和连接点模型 连接点 是系统执行中的一个可标识的点。连接点模型 是 AOP 中最基本和最 独特的概念,它定义了系统中哪个连接点是公开的,以及如何捕获它们。要用方 面实现横切功能,需要用名为切入点的编程结构捕获所需要的连接点。 切入点 选择连接点,并收集所选的连接点处的上下文。所有 AOP 系统都提供 一种定义切入点的语言。切入点语言的复杂程度是不同 AOP 系统的一种区分元素 。切入点语言越成熟,越容易编写健壮的切入点。请参阅 AOP@Work 系列的第一 篇文章,学习关于切入点语言的重要性的详细讨论(请参阅参考资料)。 捕获连接点 切入点指定程序给定元素的属性。编写好的方面的要点在于编写强壮的切入点 ,其他重要部分是良好设计的方面继承关系。当系统发展时,捕获比预计多的连 接点或者错过预计连接点的切入点都会使系统容易崩溃。编写好的切入点是掌握 好 AOP 的关键,尽管这对于新手来说通常不是一件容易的事。 目前,捕获连接点的最常用方法是利用程序元素的隐式属性,包括静态属性, 如签名(它包括类型和方法名、参数类型、返回类型和异常类型等)和词汇排列 (lexical placement),以及动态属性(如控制流程)。在连接点签名中明智地 使用通配符通常可以产生好的、简洁的连接点定义。还可以将单独的连接点组合 为更复杂的连接点。基于程序元素的隐式属性的连接点模型非常强大并且很有用 ,AOP 在当前生产系统中的成功证明了这一点。 在于程序元素中可用的隐式信息通常足以捕获所需要的连接点。在这种有时称 为动态横切的模型中,隐式数据、通配符和动态属性(如控制流程的结合)使您 不用修改所捕获的程序的元素就可以捕获连接点。例如,可以通过指定在实现了 Remote 接口的类中抛出 RemoteException 的操作来捕获所有 RMI 调用。一个像 execution(* Remote+.*(..) throws RemoteException) (在 AspectJ 中定义) 这样的连接点可以很好地捕获所有 RMI 操作,而无需修改程序元素,并且保证有 一个强壮的切入点。这里很好的一点是可以不需要加入比 RMI 基础设施所需要的 更多的协作就可以捕获连接点。 用元数据捕获连接点 基于签名的切入点不能捕获实现某种横切功能所需要的连接点。例如,如何捕 获需要事务管理或者授权的连接点呢?与 RMI 的例子不同,在元素名或者签名中 没有什么内在的东西说明事务性或者授权特性。在这种情况下,所需要的切入点 可能会变得很难处理,从下面的例子中就可看到。(这是 AspectJ 的例子,但是 在其他系统中的切入点在概念上是相同的。)
像这样的情况就要用元数据捕获所需要的连接点。例如,可以编写如下所示的 切入点,以捕获所有带有 @Transactional 注释的方法的执行。
AOP@Work: AOP和元数据:完美的匹配,第1部分(4)时间:2011-09-04 IBM Ramnivas Laddad元数据和模块化 虽然上述例子使使用元数据捕获连接点看起来不用费什么脑子,但是对这种使 用的潜在影响加以考虑是很重要的,特别是涉及到模块化(modularity)的时候 。一旦开始在切 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |