快速业务通道

AOP@Work: AOP和元数据:完美的匹配,第1部分 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
mer 类。

清单 9. 具有嵌入注释者方面的 Customer 类

public class Customer { public void setAddress(Address addr) { ... } public void addAccount(Account acc) { ... } public void removeAccount(Account acc) { ... } ... private static aspect Annotator { declare annotation: public Customer.*(..): @Transactional; } }

与此类似,清单 10 中的 Account 类包括一个注释者方面。

清单 10. 带有嵌入注释者方面的 Account 类

public class Account { public void credit(float amount) { ... } public void debit(float amount) { ... } ... private static aspect Annotator { declare annotation: public Account.*(..): @Transactional; } }

现在比较这个实现与 版本 3 中使用 Participant 模式的实现。版本 3 有一 个很大的缺点:它使一个类与特定的方面关联在一起。从某种意义上说,它是一 种非常积极的参与 —— 必须总是存在一些基本方面(由于它们是所有参与方面 的基本方面)。请使用注释者方面方法,参与只发生在对注释类型的共同理解这 一级别。

AOP@Work: AOP和元数据:完美的匹配,第1部分(16)

时间:2011-09-04 IBM Ramnivas Laddad

连接注释类型

这种技术的一种变化是用注释者方面作为服务于业务目的的注释和方面实现所 使用的注释之间的桥梁。例如,如果知道所有具有 @Purchase 和 @OrderProcessing 注释的方法都必须是事务管理的,那么可以编写如清单 11 所 示的方面。

清单 11. 将业务注释转换为横切 2005-3-20 注释

public aspect BusinessTransactionBridge { declare annotation: @Purchase *.*(..): @Transactional; declare annotation: @OrderProcessing *.*(..): @Transactional; }

这个方面将 @Transactional 注释附加到所有具有 @Purchase 或者 @OrderProcessing 注释的方法中。将这种方法与 清单 2 和 清单 6 中的方面结 合,就可以将事务管理逻辑用于方法的执行。

结束语

元数据是表示关于程序元素的额外信息的方法。Java 编程语言中新的元数据 功能使得使用有类型的注释成为可能。使用元数据很简单,尽管消费它会有许多 选择。面向方面的编程本身就表现为原则性的元数据消费者。带元数据参数的连 接点模型通过帮助横切功能使用更简单的切入点,使 AOP 更易被接受,而用稳定 的、基于签名的切入点难于指定这种横切功能。

在这由两部分组成的系列文章的第 1 部分中,我对元数据概念做了高层次的 介绍,并说明了 AOP 如何利用包含在程序元素的元数据中的信息。我还简要分析 了不同 AOP 系统中支持基于元数据的切入点所涉及的机制,并讲解了一个分五步 的设计改造,以展示如何在 AOP 系统中使用元数据。

在本文的第 2 部分中,我将深入研究让 AOP 作为消费者和供应者时,定义和 使用元数据时的设计考虑。我将讨论添加元数据会对 AOP 系统中的 obliviousness 原则产生怎样的影响,以及元数据如何影响 AOP 系统的采用。我 还要介绍一种让 AOP 作为多维功能空间中的签名的创新方法,这是一种在日常 AOP 实践中、以及在为非 AOP 目的设计注释类型时有用的概念。

致谢

我要感谢 Ron Bodkin、Wes Isberg、Mik Kersten、Nicholas Lesiecki 和 Rick Warren 对本文的审阅。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号