快速业务通道

AOP@Work:介绍AspectJ 5 - AspectJ中的Java 5支持和其他新特性抢鲜看 - 编程入门网

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

AOP@Work:介绍AspectJ 5 - AspectJ中的Java 5支持和其他新特性抢鲜看

时间:2011-09-04 IBM Adrian Colyer

AspectJ 5 (目前处在它的第二个里程碑版本)的主要重点是对 Java 5 中引 入的新 Java 语言特性(包括注释和泛型)提供支持。AspectJ 5 还包含没有加 入 Java 5 的新特性,例如基于注释的开发风格、改进的装入时织入和新的方面 实例化模型。

在 AOP@Work 系列的这一期中,我概述了 AspectJ 5 语言和包含 AspectJ 编 译器及相关工具的 AspectJ 5 版本。我先介绍如何用 AspectJ 5 编译器编译 Java 应用程序 (既可以用命令行编译器也可以用 AspectJ 开发工具(AJDT;请 参阅 参考资料)),然后,我提供了使用 Java 5 特性实现 AspectJ 应用程序 的一些示例。我还讨论了 擦除(erasure) 对 AOP 系统的意义,这是 Java 5 中用来实现泛型的技术,我还解释了 AspectJ 解决问题的方式。这篇文章中描述 的有些特性只能用即将推出的 AspectJ 5 M3 版本编译(计划在 2005 年 7 月发 布)。

也可以下载以下示例中使用的 AJDT 或命令行 AspectJ 编译器。请参阅 参考 资料 获得技术下载的链接。

用 AspectJ 编译 Java 5 应用程序

AspectJ 编译器 (ajc)支持在版本 1.3(及以前版本)、1.4 和 5.0 的兼 容级别上编译 Java 源代码,并生成针对 1.1 版以上 VM 的字节码。像 javac 一样,ajc 有一些限制:在 1.4 版本兼容级别上编译源代码只支持 1.4 及以上 版本的目标 VM,在 5.0 版本兼容级别上编译源代码只支持 5.0 版本的目标 VM 。

AspectJ 编译器的默认兼容级别 是使用 5.0 的源代码级别,并生成针对 5.0 VM 的字节码。可以传递 -1.5 编译器选项,显式地把源代码兼容级别和目标级别 设置为针对 Java 5。假设想用 AspectJ 5 编译器处理 Java 1.4 语言并针对 1.4 VM,那么只需传递 -1.4 即可。

AspectJ 5 织入器也默认在 Java 5 兼容模式下运行。在这个模式中,织入器 会正确地解释 Java 5 中的新特性;例如,编译器在确定 args(Integer) 是否匹 配 int 参数时,会考虑自动装箱和拆箱。如果不是从源文件编译,而是用编译后 的 Java 5 .class 文件 (在 inpath 上),使用 AspectJ 编译器来织入方面( 在 aspectpath 上),那么这就是想要的行为。传递 -1.4 或 -1.3 选项会禁用 Java 5 特性。

AspectJ Development Environment Guide 包含更多关于新的编译器标志和选 项的信息。请参阅 参考资料 一节访问这个指南。

用 AJDT 和 Eclipse 编译

如果正在用 AJDT 编译和运行 AspectJ 程序,那么 AspectJ 就继承了 Eclipse 中为 Java 编译指定的编译器选项。在这种情况下,可以对 AspectJ 进 行配置,把 Java 5 模式作为工作区选项配置使用,或者以每个项目为基础使用 。只要进入 Java 编译器选项配置页,把 Compiler compliance level 属性设置 为 5.0 即可。如果正在从 JDK 1.4 升级,那么可能还需要在项目的 build 设置 中把 JRE 系统库更新到 Java 5 JRE。

图 1 显示了 AJDT 的 Java 编译器选项配置页和一个用于 Java 5.0 兼容级 别的选项配置设置。

图 1. 在 Eclipse 中指定 5.0 兼容级别

AOP@Work:介绍AspectJ 5 - AspectJ中的Java 5支持和其他新特性抢鲜看 - 编程入门网

AOP@Work:介绍AspectJ 5 - AspectJ中的Java 5支持和其他新特性抢鲜看(2)

时间:2011-09-04 IBM Adrian Colyer

在方面中使用 Java 5 的特性

有了这些基础知识,现在可以把注意力转到在 AspectJ 中使用 Java 5 特性 了。我选择了一个示例方面,它支持一组基本的生命周期操作,可以用于任何被 注释为 ManagedComponent 的类型 。ManagedComponent 是一个简单的标记注释 ,如下所示:

public @interface ManagedComponent {}

方面本身被设计成可以表现许多 Java 5 和 AspectJ 5 语言的特性,包括枚 举、注释、新风格的

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