使用ASM4.0实现AOP的功能,监控每个方法的执行时间
接之前的博客http://zhwj184.iteye.com/admin/blogs/1630756 关于asm使用的示例,这次使用asm来动态统计每个方法的执行时间,实现AOP功能。
AOP的更通用的做法是对原始类动态生成子类,调用子类的方法覆盖父类,来实现AOP的功能。著名的 Hibernate 和 Spring 框架,就是使用这种技术实现了 AOP 的“无损注入”。
下面我们就通过一个示例来对方法Foo.execute调用时动态注入方法执行前后的时间统计来统计方法的执行时间
import java.io.PrintStream;public class AsmAopExample$Foo{ public static void execute() { AsmAopExample.Monitor.start(); System.out.println("test changed method name"); try { Thread.sleep(10L); } catch (InterruptedException e) { e.printStackTrace(); } AsmAopExample.Monitor.end(); }}