AOP@Work: AOP和元数据:完美的匹配,第1部分 - 编程入门网
实例的支持。
AOP@Work: AOP和元数据:完美的匹配,第1部分(7)时间:2011-09-04 IBM Ramnivas Laddad在 AOP 中提供注释 使用 AOP 结构提供注释背后的基本想法是避免将程序元素定义与注释相混淆 。概念上,这种结构可以以横切的方式在程序元素上附加注释。初看之下,使用 AOP 构造提供注释、然后使用这些注释捕获连接点似乎是不必要的、多余的。总 之,如果可以确定需要注释的连接点,那么就可以编写一个切入点,并直接通知 这些连接点。不过,以横切的方式提供注释是很有用的。首先,这种声明可以作 为与非 AOP 客户通信的管道。其次,以横切机制提供注释使得设计一种更松散耦 合的系统、同时避免注释混乱成为可能。 在本文最后,我将说明使用 AOP 构造提供注释带来的一些设计可能性。现在 ,我将展示以横切方式提供注释的基本语法。 提供注释语法 AspectJ 建议的语法扩展了当前的静态横切构造,以创建一个新的 declare annotation 语法。下面的代码段将附加一个类型为 Authenticated 的、 permission 属性设置为 banking 的注释:
@AspectJ 切入点还通过使用 @DeclareAnnotation 支持同样的功能,可以像 下面这样编写同样的声明:
在 JBoss AOP 中,当使用 XML 样式的方面时,可以用 annotation- introduction 元素附加注释。invisible 属性指出在运行时是否保留注释(等同 于标准 Java 元数据功能中的 RetentionPolicy.SOURCE)。
可以看出,提供注释的原理在不同的 AOP 系统中是相同的,尽管语法不一样 。 使用元数据的 AOP 设计 从前面几节中可以看出,将元数据与 AOP 结合是相当简单的。重要的是知道 什么时候使用基于元数据的横切、什么时候不使用它。在本节中,通过考虑系统 如何从一个使用隐式连接点属性的 AOP 实现进化为一个结合了基于元数据切入点 的实现,我将回答这个问题。在第 2 部分中,我将探讨选择元数据驱动方式的概 念性问题。 本节的讨论应当在两个方面提供帮助:首先,作为 AOP 实践者,使用元数据 并不总是第一或者惟一的选择,理解这一点很重要。其次,这里的示例实现可以 指导您在决定使用基于元数据的横切后,如何改进设计。 可以将一个事务管理程序作为练习的例子。虽然我使用了 AspectJ 开发这个 例子的所有代码,但是在其他 AOP 系统中的实现在概念上是相同的。将这个练习 中的每一步都看成是对原设计的改造。目标是逐渐分离系统并改进其模块性。 AOP@Work: AOP和元数据:完美的匹配,第1部分(8)时间:2011-09-04 IBM Ramnivas Laddad版本 1: 原生方面 我模块化一个横切功能的第一次尝试是使用特定于系统方面,它包含了切入点 定义和这个切入点的通知。这是非常简单的方案,并且通常是学习 AOP 时遇到的 第一个设计。图 1 显示了这个使用一个方面的设计示意图: 图 1. 用 AOP 实现事务管理的第一个努力 清单 1 实现上述设计 清单 1: 银行系统的事务管理方面
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |