15.3 AOP框架介绍

    本节介绍一些AOP流行框架,有兴趣的读者可以登录它们的网站作更深入的了解。

    1.AspectJ

    AspectJ是目前最流行也最完善的AOP实现,它给自己的定义是。

    AspectJ is a seamless aspectoriented extension to the Javatm programming language, Java platform compatible, easy to learn and use.

    AspectJ是一个Javatm编程语言在面向方面上的无缝扩展,并且与Java平台兼容,容易学习和使用。

    AspectJ支持编译时、类加载时和运行时织入。其中,编译时织入不仅支持源代码的生成(其称之为Compile Weaving),也支持对已编译好的二进制文件(例如jar包、class文件)织入增强(其称之为Post-compile Weaving,也叫二进制织入,Binary Weaving)。正如定义所说,它是Java的扩展,这也体现在语法上面,增加了初学者的难度。

    2.Nanning

    Nanning是一款非常小巧的AOP框架,名字源于中国广西南宁。它使用了Java反射技术实现了拦截器框架,可以实现基于方法的拦截。该项目最后发布日期是2003年8月。

    3.AspectWerkz

    AspectWerkz是一款非常优秀的AOP框架,它使用了字节码工具,可以在编译时、类加载时和运行时修改二进制代码。该项目最后发布日期是2005年3月。

    4.Spring AOP框架

    Spring现在不仅仅包含Spring框架,在Webflow、SOA、Andriod、云计算等各个方面均有出色的贡献。Spring框架本身也包含一个AOP框架,但并未和Spring框架强行绑定,读者可以在使用时自由选择。

    Spring AOP框架最开始使用了Java动态代理和动态字节码工具,其本身只支持方法级别上的拦截和增强,后来由于实现了和AspectJ的集成,所以可以完成属性(field)的访问拦截等AspectJ才有的功能。并且由于Spring AOP和其IoC框架实现了无缝集成,使其成为使用Spring框架做项目的首选AOP方案。

    5.JBoss AOP

    JBoss AOP的框架目前已经支持属性(field)、方法、构造方法上的拦截,但它是一个EJB的容器,所以其AOP框架和EJB服务器实现了绑定,读者选择时需要在移植性方面作考量。