快速业务通道

用AspectJ构造方面库 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
类型,它以注释的形式来表达程序中各成员的元数据信息,采用符号@标 示。 Java5中可以被注释修饰的Java程序成员有很多,AspectJ 5能支持的注释包 括修饰方面、方法、属性、构造函数和通知,修饰方法和通知的参数的注释也能 支持,但是不支持pointcut和declare语句上的注释。为了支持注释类型, AspectJ 5扩展了pointcut语法,可以匹配存在或者不存在的注释类型。例如清单 3中的名叫onewayMethod的pointcut可以匹配所有被注释@Oneway修饰的方法调用 。

清单 3 含有注释的pointcut

public aspect C { pointcut onewayMethod: call(@Oneway * *(..)); }

AspectJ 5对注释的支持简化了实施库的方法,我们可以很容易地想到,在把 方面库实施到应用程序时,可以利用注释标明具体的切入点的位置。在构造方面 库文件时,只需要定义好与注释相关的切入点,并规定该切入点上的具体的通知 内容就可以了。我们同样会在下面的章节中介绍使用注释制作简单的方面库的过 程。

用AspectJ构造方面库(2)

时间:2011-05-15 IBM 春郭迎 志甘 鹏刘昕

3.使用抽象方面构造方面库

曾经有一段时间,我们只有在获得了所有源代码的情况才才能顺利的编译用到 了AspectJ的软件项目。现在情况当然已经和以往大大不同,由于 AspectJ今年来 的迅速发展,在项目中使用AspectJ的要求大大放松了。我们可以在没有源代码的 情况下进行AOP开发。无论是程序主逻辑部分还是 Aspect部分,都可以用jar文件 的形式提供,并且能够顺利的通过AspectJ的编译。

下面我们将通过一个例子演示如何在AJDT中构造Aspect库。在构建这个例子的 过程中,我们用到了Eclipse及其上的AJDT插件。这两个工具可以分别从 http://www.eclipse.org 和http://www.eclipse.org/ajdt 上下载。AJDT从多个 方面扩展了Eclipse的Java开发环境使其支持面向方面的编程。当在Eclipse平台 上安装了AJDT插件之后,我们现在能新建AspectJ项目和创建新的Aspect了(图 1 )。

图 1 AJDT提供的Wizard

利用图 1中所示的向导,我们建立一个AspectJ Project来存放我们的方面库 。我们将这个工程命名为sample.aspects.library。随后,我们可以利用AJDT提 供的工具按钮建立一个新的Aspect, 用到的工具栏按钮如图 2所示。

图 2 使用工具栏按钮建立一个新的Aspect

用AspectJ构造方面库(3)

时间:2011-05-15 IBM 春郭迎 志甘 鹏刘昕

通过AJDT提供的向导,我们建立了如下的Aspect:

清单 4 抽象方面AbstractTrace

package sample.aspects.library; public abstract aspect AbstractTrace {   public abstract pointcut TraceScope();   Object around():TraceScope(){   Object sig = thisJoinPoint.getSignature();   System.out.println("Enter "+sig);   Object res = proceed();   System.out.println("Exit "+sig);   return res;   } }

清单 4中建立了一个名为AbstractTrace的抽象方面,它包含了一个pointcut 和一个advice。我们看到,名为TraceScope的 pointcut也被标明是抽象的。根据 AspectJ的规范,一个抽象的方面是不会起作用的。抽象方面存在的唯一目的是为 了被用户继承。接下来,我们将整个工程导出成为一个.jar文件。在AspectJ中, 我们可以将这种形式的Jar交给用户,它们随后就可以利用继承来使用方面库提供 的功能了。

如果我们希望在一个新的工程中使用方面库,我们需要在工程中指定用到的方 面库,并继承方面库中提供的抽象方面。在Eclipse中,我们首先将这个 jar文件 加入到工程的"Java Build Path"中,就如同使用一个普通的Java类库一样。随后 ,我们就可以利用AJDT提供的向导来继承抽象方面了,如图 3

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