WEB开发网
开发学院软件开发Java 用AspectJ构造方面库 阅读

用AspectJ构造方面库

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: 图 4 修改JDK Compilance接下来要做的就是新建一个标准Java注释类型,在Eclipse中点击File->New->Other弹出New对话框,用AspectJ构造方面库(6),选择 Java下面的Annotation,设定它的Package为sample.annota

图 4 修改JDK Compilance
用AspectJ构造方面库

接下来要做的就是新建一个标准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
用AspectJ构造方面库

查看原图(大图)

清单 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在应用项目中广泛应用有所帮助。

上一页  1 2 3 4 5 6 

Tags:AspectJ 构造 方面

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接