快速业务通道

AOP@Work: AOP工具比较,第1部分-语言机制 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
类型。 这样做可以保证向系统添加由 Account 扩展的新类时,新类会自动与切入点匹配 。

切入点支持复合(composition),这就允许把简单的切入点组合成更复杂的 切入点。例如,可以把所有 Account 调用的切入点限制在那些针对特定类或控制 流程进行的调用中。切入点的命名(naming)机制提高了可读性和复合性。对抽 象(abstraction)与具体化(concretization)的支持,可以更加容易地创建通 用库,对于要应用库的特定应用程序的切入点来说,这些库可以独立定义。最后 ,对切入点中公开连接点状态 的支持允许对诸如正在执行对象和方法参数之类的 访问事项进行商量。

方面比较

如前所述,所有 AOP 工具的底层机制都是连接点和切入点、通知和类型间声 明的概念。在这些工具中,可以注意到的主要区别就是方面声明编写及应用到系 统上的方式。这些工具可用以下方法中的一种进行方面声明:使用类似 Java 的 代码、注释或 XML。对于某些开发人员来说,熟悉用 Java 语言编程方面的知识 ,要比熟悉语言扩展技术的优劣更重要,这些内容会在后面的小节中讨论。对于 其他人来说,了解注释和 XML 技术在集成上的优势,要比痛苦地把切入点当作字 符串来操作更重要。

在这一节中,将使用一个常见的示例指出每个工具在方面声明技术上的差异。 请考虑图 1 所示的 Account 类的授权策略这样一个示例。在面向对象的实现中 ,最常见到的,就是对认证的调用分散在 Account 类的众多方法以及需要认证的 其他类中。在 AOP 实现中,可以明确地用一个方面捕获这个行为,而不必修改操 纵帐户的代码。不管使用什么工具声明,这个方面都需要具备以下特征:

一个切入点,捕捉 banking.Account 类上所有公共方法的执行。

一种引用正在认证的 Account 的方式。

通知,在切入点指定的连接点上调用 Account 的认证。

现在,请看这几个领先的 AOP 工具各自是如何处理这个方面的。

AOP@Work: AOP工具比较,第1部分-语言机制(4)

时间:2011-09-04 IBM Mik Kersten

AspectJ

Aspect 中的方面声明类似于 Java 语言中的类声明,如图 2 所示。由于 AspectJ 是 Java 语言语法和语义的扩展,所以它提供了自己的一套处理方面的 关键字。除了包含字段和方法之外,AspectJ 的方面声明还包含切入点和通知成 员。示例中的切入点使用了修饰符(modifier)和通配符(wildcard)模式来表 达“所有公共方法”。对帐户的访问,由 pointcut 参数提供。通知使用这个参 数,而切入点则用 this(account) 把它绑定。这样做的效果,就是捕获了正在执 行的方法所隶属 Account 对象。否则,通知的主体与方法的主体相似。通知可以 包含认证代码,或者就像在这个示例中一样,可以调用其他方法。

图 2. AspectJ 的方面

AOP@Work: AOP工具比较,第1部分-语言机制 - 编程入门网

构建 AspectJ 程序与构建 Java 程序类似,其中包括调用 AspectJ 的递增编 译器,构建所有的项目源文件,包括普通的 Java 源文件。运行 AspectJ 程序也 与运行 Java 程序一样,请注意要把 aspectjrt.jar 库添加到类路径中。要对在 系统中应用哪个方面进行配置,必须把它们加入包含列表或从中删除,包含列表 会传递给编译器,可以通过 IDE 支持传递包含列表,如果正在 Ant 环境或命令 行进行工作,也可以通过“.lst” 包含文件传递。注意,在第 2 部分中,将讨 论构建 AOP 程序的细节以及方面设计的概念。

AspectWerkz

AspectWerkz 和 AspectJ 之间的重要区别就是: Authentication 现在是一 个普通的 Java 类,而不是一个方面。AspectWerkz、JBoss AOP 和 Spring AOP 都在没有改变 Java 语言语法的情况下加入了方面语义。AspectWerkz 提供了两 种进行 AOP 声明的途径。最常用的是注释,注释可以采用图 3 中的 Java V5.0 风格,也可以为了与

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号