设置生成CGLib和JDK代理生成的class文件

jdk和cglib代理方式属于是老生常谈了,这里就不说了,我们说一下特别的。

我们都知道cglib是针对于类,jdk是针对于接口,

cglib在目标类被代理后会自动生成目标类的子类,也就是xxxclass$$EnhancerByCGLIB$$c03f68c4.class

jdk代理后会自动生成目标接口的实现,也就是$Proxy0.class

我们平时代码在编译过程中是不会生成代理类的class文件,只有在运行中才会生成

我们可以通过在启动类中设置代理类生成路径

1
2
3
4
// 设置CGLib代理类的生成位置
System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, "./cg");
// 设置JDK代理类的输出
System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");