用AspectJ构造方面库
2010-03-18 00:00:00 来源:WEB开发网1.方面库
大家都知道,各种AOP工具的核心就是切入点(pointcut)和通知(advice)的声明。切入点描述了主程序执行与方面执行相遇的地方,也就是被横切的位置;通知则描述了在程序执行过程中遇到匹配的切入点时应当采取什么行动。假设已经开发了一个方面,并且感觉它适用于其他项目,那么可以泛化这个方面,并把它隔离到自己独立的项目中,形成一个库,即方面库(Aspect Library)。方面库提供了某个功能的内部执行逻辑和基础设施,通过切入点的实例化将方面库与某个特定项目连接起来。例如提供应用程序性能监视的方面库,实现了所有性能监视相关的方法和通知,某应用程序使用该库的时候,只需要把库的切入点定义为应用特定的连接点即可,而无需关心性能监视功能的具体实现。这就是方面库的基本概念。
方面库是AOP工具具有扩展性的体现,目前常用的AOP工具,如JBoss AOP、Spring AOP、AspectJ等,都有对方面库的支持,但由于它们实现AOP的方法不同,方面库的定义和使用方法也不相同。在JBoss AOP和Spring AOP中,通知的实现都是通过普通Java语法定义,切入点到通知的绑定是通过显式的XML文档或者注释实现的。所以将方面库应用于应用程序就可以很容易地通过在 XML 中或通过注释定义新的通知绑定而实现。并且JBoss和Spring系统本身已经提供了很好的方面库供用户使用。
AspectJ是Java 语言语法和语义的扩展,它提供了自己的一套处理方面的关键字,这些都决定了用AspectJ构造方面库的方法具有一定的特殊性。所以AspectJ构造的方面库一直不象JBoss AOP和Spring AOP那样普遍,AspectJ也并没有提供任何方面库。令人欣慰的是, AspectJ从AspectJ5版本开始提供对注释的支持,它的编辑工具AJDT中逐渐加入了对方面库的支持功能,从而使得使用AspectJ构造方面库变得越来越容易。本文就来介绍如何用AspectJ构造方面库。
更多精彩
赞助商链接