• 设置debug的环境变量
1
2
3
4
5
6
7
8
9
/**
* 该设置用于输出cglib动态代理产生的类
*/
System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, "/tmp/");

/**
* 该设置用于输出jdk动态代理产生的类
*/
System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");
  • 或者使用 HSDB(Hotspot的debug工具)
1
sudo java -classpath "/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/lib/sa-jdi.jar"  sun.jvm.hotspot.HSDB

attach到指定的进程之后,选择class browser,就可以找到动态生成的类

点进去

会在当前目录生成对应的class文件:

1
2
3
4
5
6
➜  /tmp  tree
.
├── com
│   └── air
│   └── mvc
│   └── SampleController$$EnhancerBySpringCGLIB$$d680c039.class

对应的class文件就创建了,可以拖到idea或者其他的工具中查看,也可以查看类的继承关系