首页 / 软件开发 / JAVA / AOP@Work: AOP和元数据:完美的匹配,第1部分
AOP@Work: AOP和元数据:完美的匹配,第1部分2011-09-04 IBM Ramnivas Laddad元数据增强的AOP的概念和结构简介:在这篇由两个部分组成的系列文章的第 1 部分中,作者 Ramnivas Laddad 将对新的元数据功能进行概念性介绍,并展示在加入了元数据注释后, AOP 可以在什么地方获得最大的好处。然后他将分五步完成一个设计改造,从一 个无元数据的 AOP 实现开始,最终得到一个结合了 Participant 设计模式与注 释者-供应者(annotator-supplier)方面的 AOP。新的 Java 元数据功能(facility)是 J2SE 5.0 的一部分,它可能是当前 Java 语言中最重要的增强。通过提供为程序元素附加额外数据的标准方法,元数 据功能具有简化和改进许多应用程序开发领域的潜在能力,其中包括配置管理、 框架实现和代码生成。这个功能还对面向方面的编程(即 AOP)具有特殊意义的 影响。元数据与 AOP 的结合带来了一些重要的问题,其中包括:元数据功能对 AOP 有什么影响?元数据增强的 AOP 是可选的还是必需的?在哪儿可以找到在 AOP 中有效地使用元数据的准则?这种结合对 AOP 的采用有什么影响?在这个由两部分组成的系列文章中,我将回答这些问题,这是新的 AOP@Work 系列的第二篇文章。在这篇文章的前半部分中,我首先将对元数据和 Java 元数 据功能的概念进行介绍,还将说明提供元数据和消费它的区别,并提供一些适合 使用元数据注释的常见编程场景。下一步,我将快速地回顾 AOP 的连接点模型的 基本内容,并说明它从元数据增强中可以获得哪些好处。最后是一个实际的例子 ,将使用元数据增强的 AOP 分五步完善一个设计。在第 2 部分,我将展示一种 将元数据视为多维关注点空间中的签名的一种创新方法、讨论元数据对 AOP 采用 的影响,最后提供一些有效结合 AOP 与元数据的指导。在本文中,我将采用三种重要的 AOP 实现的例子,将这些概念应用到实例中 ,这三种实现是 AspectJ、AspectWerkz 和 JBoss APO。请参阅参考资料,以获 得关于 Java 元数据功能和面向方面编程的一组介绍文章的清单。元数据的概念元数据 是关于数据的数据。在编程语言上下文中,元数据是添加到程序元素 如方法、字段、类和包上的额外信息。元数据是用称为注释 的程序元素表示的。 与元数据相关的语义范围很广,从纯粹的文档,到执行行为的修改。例如,可以 用元数据描述类的作者和版权所有者,这时它对程序的执行没有影响,也可以用 它描述方法属性,比如事务特性,这很可能改变方法的行为,正如我在本文后面 所描述的。虽然在 Java 语言中有众多的元数据工具(最著名的是 XDoclet),但是元数 据注释直到发行 Java 5.0 时才被添加到 Java 语言的核心中。 Java 元数据功 能(JSR 175,请参阅参考资料)包括一种机制,该机制允许在 Java 代码中添加 自定义注释,并允许通过反射(reflection),以编程方式访问元数据注释。理解和使用元数据的关键是供应和消费的概念。元数据的供应者 是将注释实 例与程序元素关联的工具,消费者 是读取、解释以及对注释实例进行操作的工具 。在下一节中,我将更详细地讨论这些概念。