本文引用自AspectJ LTW(Load Time Weaving)

AspectJ

AspectJ是目前实现AOP框架中最成熟,功能最丰富的语言。当然,AspectJ需要使用额外的编译器。

AspectJ可以通过多种方式实现,包括源码织入或字节码织入,并且可以直接在虚拟机(VM)中实现。在所有情况下,AspectJ程序都将成为在Java VM中运行的有效Java程序。受切面影响的类与不受影响的类具有二进制兼容性(以保持与不受影响的原始文件编译的类兼容)。支持多种实现方式使该语言可以随着技术的变化而发展,并且与Java兼容可确保平台可用性。
AspectJ采用编译期织入和类加载期织入的方式织入切面,是语言级的AOP实现,提供了完备的AOP支持。它用AspectJ语言定义切面,在编译期或类加载期将切面织入到Java类中。
AspectJ提供了两种切面织入方式,第一种通过特殊编译器,在编译期,将AspectJ语言编写的切面类织入到Java类中,可以通过一个Ant或Maven任务来完成这个操作;第二种方式是类加载期织入,也简称为LTW(Load Time Weaving)。
使用AspectJ LTW有两个主要步骤,第一,通过JVM的-javaagent参数设置LTW的织入器类包,以代理JVM默认的类加载器;第二,LTW织入器需要一个aop.xml文件,在该文件中指定切面类和需要进行切面织入的目标类。

设置-javaagent JVM参数的方法:
(1)在Eclipse下的设置:
运行类->右键单击->Run As->Run…,可以在弹出的Run设置窗口设置该类的各项运行属性,切换到Arguments Tab页,在VM arguments中通过-javaagent指定AspectJ 织入器类包。
-javaagent:E:\workspace\lib\spring2.5\aspectjweaver.jar
(2)在Tomcat下的设置
打开<Tomcat_Home>\bin\catalina.bat,在该批处理文件头部添加以下的设置:
set JAVA_OPTS=-javaagent:E:\workspace\lib\spring2.5\aspectjweaver.jar

参考资料

The AspectJTM Programming Guide
AspectJ LTW(Load Time Weaving)