使用 ASM 生成动态代理的代码比较长,上面这段代码的含义就是生成类 TargetServiceProxy,用于代理TargetService ,在调用 targetService.demoQuest() 方法之前调用切面的方法 aspectService.preOperation();
测试类就直接调用 AsmProxy.createAsmProxy() 方法即可,比较简单。
下面是我们生成 TargetServiceProxy 的目标类
至此,我们已经介绍了四种动态代理的方式,分别是JDK 动态代理、CGLIB 动态代理、Javaassist 动态代理、ASM 动态代理,那么现在思考一个问题,为什么会有动态代理的出现呢?或者说动态代理是基于什么原理呢?
其实我们上面已经提到过了,没错,动态代理使用的就是反射 机制,反射机制是 Java 语言提供的一种基础功能,