AOP@Work: AOP和元数据:完美的匹配,第1部分 - 编程入门网
过分析每种系统 是如何处理捕获所有携带 @Transactional 注释实例的方法的切入点,可以了解 这种区别。在这些例子中,我将重点放在通过注释类型选择连接点上,然后我将 进一步解释在选择连接点时,其他会起作用的因素。
AspectJ5 AspectJ 5 语法(在编写本文的时候,它处于重要转折阶段)扩展了类型、方 法和字段的定义,以将注释作为签名的一部分加入,如下所示:
如果想要在 AspectJ 5 中使用 @AspectJ 样式的定义,那么同样的切入点将 有如下定义:
AspectWerkz AOP@Work: AOP和元数据:完美的匹配,第1部分(6)时间:2011-09-04 IBM Ramnivas Laddad像大多数其他 AOP 工具一样,AspectWerkz 的切入点语法与 AspectJ 的语法 非常相像。下面代码段中的切入点声明使用了元数据类型的注释,而 XML 类型具 有同样的切入点表示:
注意,AspectWerkz 使用元数据扩展 Java 编程语言,以便支持 AOP,如上述 例子所示。因此,AspectWerkz 出于两种目的使用元数据:扩展编程元素的语义 和实现基于元数据的横切。在上面的例子中,我着重分析了后一种用途。 JBoss AOP JBoss AOP 在概念上与其他 AOP 系统没有很大区别,尽管它使用了不同的语 法。下面显示的切入点与其他例子相同,但是是用 JBos XML 语法表示的:
可以看出,AOP 系统在根据附加到连接点上的元数据注释捕获它们的方式上没 有概念上的差别。 按注释属性选择 在选择连接点时,类型不是惟一要考虑的事项:还可以考虑属性。例如,下面 的切入点将捕获 value 属性设置为 RequiredNew 的、带有 @Transactional 注 释的所有方法:
在编写本文的时候,还没有支持基于注释属性的切入点的 AOP 系统。相反, 每个系统都是根据通知中的动态决定来检查属性,并调用相应的逻辑(或者至少 使用 if() 切入点动态检查)。基于注释属性的切入点有某些好处,特别是对于 编译时检查和静态选择的效率。下一版本的 AOP 系统支持这种切入点。 公开注释实例 由于通知逻辑可以取决于元数据注释的类型 和实例属性,每一个注释实例都 必须使用与连接点上的其他上下文相同的方式公开上下文(例如,对象、方法参 数等)。AspectJ 5 扩展了现有的切入点,并增加了几个新的切入点来公开注释 。例如,下面的切入点收集与捕获的连接点相关联的、类型为 Transactional 的 注释实例:
捕获注释实例后,可以用与任何其他上下文相同的方式使用注释实例。例如, 在下面的通知中,查询捕获的注释,以获得其属性:
大多数 AOP 系统只使用反射 API 公开捕获的连接点上的注释实例,并且不允 许将注释绑定为连接点上下文。在这种情况下,可以查询表示已通知连接点的对 象来获得相关的注释。AspectJ 提供了反射访问和传统的连接点上下文。请参阅 参考资料,以了解更多关于 AspectJ 对公开注释 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |