AOP@Work: AOP和元数据:完美的匹配,第1部分 - 编程入门网
入点中使用元数据,方法中必须携带相应的注释,以便在使用它 们的方面的横切实现中进行协作,如下所示:
与此类似,Customer 类中的 addAccount()、removeItem() 和 setAddress() 方法现在必须携带 @Transactional 注释。 大多数 AOP 实践者目前用现有的 AOP 支持实现事务和授权功能,通常是通过 使用方面继承的设计模式。不过,正如在本文将会看到的,在 AOP 系统中添加元 数据可以显著改进它们。我将进一步讨论添加元数据如何影响 AOP 系统的模块化 ,并在本文的第二部分中讨论元数据发挥最大作用的场景。在下一节中,我将开 始更具体地说明如何扩展 AOP 实现来添加元数据。 元数据增强的 AOP AOP 系统及它们的连接点模型可以通过使用元数据注释扩展。JBoss AOP、 Spring AOP、AspectWerkz 和 AspectJ 都提供或者计划提供利用元数据的机制。 JBoss AOP 和 AspectWerkz 的当前版本支持元数据。Spring AOP 通过实现 org.springframework.aop.Pointcut 接口,允许通过编程方式编写切入点来支持 元数据。新的 AspectJ 版本将通过修改 AspectJ 语言支持元数据。 在上一节中,我展示了 AOP 如何消费元数据的基本内容,使用了用 @Transactional 注释选取方法的例子。在这一节和本文其余部分,我将重点介绍 结合 AOP 和元数据的细节。 虽然本文中的重点是支持元数据的 AOP 实现,如果利用代码生成支持,即使 在核心 AOP 系统不直接支持消费元数据时,也可以做到这一点。例如,Barter 是一种开源工具,它使用注释和代码生成预先执行步骤,以增强不支持用 Javadoc 标签捕获连接点的老版本 AspectJ 上的 DBC 合同。今天,Contract4J 用 Java 元数据功能样式的注释执行类似的任务。请参阅参考资料,以学习更多 关于这种工具的内容。 AOP 系统中的元数据支持 为了支持基于元数据的横切,AOP 系统需要提供一种消费和提供注释的方法。 我将在这里介绍这两种支持的基本内容。在下一节我将提供关于每种方法的更多 细节。 AOP@Work: AOP和元数据:完美的匹配,第1部分(5)时间:2011-09-04 IBM Ramnivas Laddad支持消费注释 支持消费注释的 AOP 系统使您可以基于与程序元素相关联的注释选择连接点 。当前提供这种支持的 AOP 系统实现了这一点,它们是通过扩展不同签名样式的 定义来指定注释类型和属性的方式实现的。例如,一个切入点可以选择所有携带 类型为 Timing 的注释的方法。而且,它可以进一步只选择(比如说)Value 属 性超过 25 的方法。要实现取决于注释类型和属性的通知(advice),系统可以 包括那些捕获与连接点相关联的注释实例的切入点语法。最后,系统还可以让通 知通过反射 API 来访问注释实例。 支持提供注释 在标准的 Java 元数据功能中,要对每一个已注释的程序元素声明一个注释实 例。如果多个程序元素有同样的注释声明,那么就会产生不必要的混乱。可以利 用 AOP 的横切机制对所有受影响的元素进行一次注释。一个支持提供注释的 AOP 系统可以以横切方式将注释附加到程序元素上。例如,可以用一个简单的声明将 @Secure 注释附加到 Account 类的所有方法上,而无需在这种方法中分别加入注 释。 并不是所有 AOP 系统支持这里提到的所有方法,在下面的讨论中可以了解更 多细节。我首先分析几种 AOP 系统是如何提供对消费注释的支持的。 在 AOP 中消费注释 切入点语法在不同的元数据增强的 AOP 系统中是不同的。通 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |