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服务器实现了绑定,读者选择时需要在移植性方面作考量。