快速业务通道

AOP@Work: AOP工具比较,第1部分-语言机制 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
J2SE V1.4 兼容采用 Javadoc 风格。AspectWerkz 还支持 另外一种基于 XML 的方面声明风格。XML 风格与下面介绍的 JBoss AOP 的风格 类似,把方面声明放在单独的 XML 文件中。

请注意通知就是普通的方法声明。按照约定,它被当作不同类型的方法声明, 因为不应当显式地调用它,而是应该在满足特定切入点时自动运行它。 AspectWerkz 的切入点声明是附加到切入点“方法”的字符串值,也可以在 XML 文件中独立存在。所以,没有切入点的 import 机制,所有的类型引用必须完全 规范。对正在运行的 Account 对象的访问技术与 AspectJ 相同。请注意,规划 的 @AspectJ 语法看起来与 AspectWerkz 注释的语法非常相似。

图 3. AspectWerkz 的方面

AOP@Work: AOP工具比较,第1部分-语言机制 - 编程入门网

构建 AspectWerkz 程序会涉及一个标准的 Java 构建,然后会涉及到后处理 。要运行 AspectWerkz 程序,必须把 AspectWerkz 库放在类路径中。在使用不 可插入的方面的情况下,由 aop.xml 文件配置系统中一些方面的包含情况。

AOP@Work: AOP工具比较,第1部分-语言机制(5)

时间:2011-09-04 IBM Mik Kersten

JBoss AOP

JBoss AOP 基于 XML 的方面来声明风格,如图 4 所示。JBoss 也支持与图 3 所示相似的注释风格。在 XML 风格中,方面、切入点和通知声明都以 XML 形式 表示的。通知的实现,用的是普通的 Java 方法,由 JBoss AOP 框架调用。切入 点和切入点到通知的绑定都在方面中用 XML 注释声明。JBoss 没有显式地绑定 Account 参数,而是提供了对当前正在执行的对象的反射访问,因此需要把类型 转换到对应的类型。注意,即将发布的 JBoss 会提供一些静态类型的切入点参数 来解决这一问题。

图 4. JBoss AOP 的方面

AOP@Work: AOP工具比较,第1部分-语言机制 - 编程入门网

用 JBoss 构建方面只包括普通的 Java 构建。JBoss AOP 的运行时截取框架 (interception framework)负责管理切入点匹配和通知调用。需要对启动和类 路径做一些配置,但是 JBoss AOP 的 IDE 插件替用户做了这些工作。方面在 jboss-aop.xml 文件中配置。

Spring AOP

查看图 5 中的 Spring AOP 示例时,可以注意到其中的 XML 比前面介绍的技 术多。与 JBoss AOP 类似,Spring 的通知实现是带有特殊参数的 Java 方法, 由 Spring 框架调用。XML 描述 accountBean,Spring 框架通过它访问 Account 对象,包括通知使用的拦截器 advisor 及其匹配模式,还有应用到模 式的向前(before) 通知。

图 5. Spring AOP 的方面

Spring AOP 的技术虽然提供了更加精细的配置,但在将它用于 XML 时,它与 JBoss AOP 非常类似。构建、运行和配置 Spring AOP 方面的过程与 JBoss AOP 相同,但 Spring AOP 依赖的是 Spring 框架方便的、最小化的运行时配置,所 以不需要独立的启动器。请注意,使用这个技术,只能通知从 Spring 框架检索 出的对象。

AOP@Work: AOP工具比较,第1部分-语言机制(6)

时间:2011-09-04 IBM Mik Kersten

语法差异

正如上面的图所展示的,AOP 工具之间的关键差异就是处理方面声明的方式。 AspectJ 是 Java 语言的扩展,用它可以完全在代码中对方面进行声明。 AspectWerkz 和 JBoss AOP 支持用方面元数据对 Java 代码进行注释,或者在独 立的 XML 文件中对方面进行声明。在 Spring AOP 中,则完全用 XML 对方面进 行声明。所以,在三种不同的技术中,对方面进行编程的感觉可能非常不同。用 AspectJ 的代码风格,方面和切入点声明感觉起来就像 Java 代码。而 用 JBoss AOP 或 AspectWerkz 的注释风格,感觉起来就像在现有 Java 元素上做的附加标签。而用 Spring AOP 风格,以及 AspectWerkz 和 JBoss AOP 的 XML 风格 时,感觉就像使用独立的声明性 XML 语言。

每种技术都有它的优势,具体要由使用者决定哪个更适合需求。所以在这

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