用AspectJ构造方面库
2010-03-18 00:00:00 来源:WEB开发网图 4 修改JDK Compilance
接下来要做的就是新建一个标准Java注释类型,在Eclipse中点击File->New->Other弹出New对话框,选择 Java下面的Annotation,设定它的Package为sample.annotation.library,名称叫做trace,其他接受缺省值,点击完成。这样,一个名叫trace的注释类型就被创建出来了,我们将基于它创建一个记录踪迹的方面库。
接下来创建方面库中的Aspect,即一个aj文件,文件如清单 6所示。
清单 6 捕捉注释的Aspect
package sample.annotation.library;
public aspect AnnotationTrace {
pointcut traceScope():execution(@trace * *(..));
Object around():traceScope(){
Object sig = thisJoinPoint.getSignature();
System.out.println("Enter "+sig);
Object res = proceed();
System.out.println("Exit "+sig);
return res;
}
}
这样,方面库的编码工作就完成了,与上一个例子类似,我们把它打包成tracelib.jar文件备用。
现在我们来介绍如何应用方面库tracelib.jar。创建一个新的AspectJ项目 sample.annotation.application,注意,因为要使用注释类型,修改JDK Compliance为5.0。新建一个标准Java类business.logic.MainLogic,添加简单函数testTrace(),用这个 Java类来模拟应用程序。
为了使用方面库,首先必须将方面库的jar文件添加到AspectJ Aspect Path中,在工程的properties对话框中选择AspectJ Aspect Path页面添加方面库的jar文件,如图 5所示。在应用程序MainLogic类中使用记录踪迹的功能时,只需要简单的将@trace添加到想要使用这个功能的函数前面即可。MainLogic 类的源码如清单 7所示。将MainLogic类作为AspectJ/Java Application来运行,可以看到输出结果,在testTrace()调用之前和之后,加入了记录踪迹的语句,如清单 8所示。这样就达到了我们使用方面库tracelib.jar的目的。相比较而言,通过注释技术实现的方面库使用起来是更为便捷。
图 5 添加AspectJ Aspect Path
查看原图(大图)
清单 7 应用程序MainLogic源码
package business.logic;
import sample.annotation.library.trace;
public class MainLogic {
@trace
public static void testTrace(){
System.out.println("call testTrace function.");
}
public static void main(String[] args) {
MainLogic.testTrace();
}
}
清单 8 MainLogic输出结果
Enter void business.logic.MainLogic.testTrace()
call testTrace function.
Exit void business.logic.MainLogic.testTrace()
5.总结
与OOP中的可重用库类似,AOP方面库可以在整个工程或者多个工程中重复使用,从而提高程序编写的准确性和方便性。使用方面库的编程人员只需要了解简单的AOP知识就能享受到AOP带来的好处,把方面库实施到具体的应用中。本文在介绍方面库基本概念的基础上,介绍了利用AspectJ构造方面库的两种技术,希望能够对AOP在应用项目中广泛应用有所帮助。
更多精彩
赞助商链接