使用 HSDB 查看Spring AOP产生的代理类

场景:Spring在运行期间,会自动给咱们的业务类Service Bean等等生成,出于好奇,想康康Spring到底给咱们生成了什么东西,这时候可以使用 HSDB 工具进行查看。

  1. 首先确保本机安装了JDK
  2. 确认Java进程的PID,本文章以Windows作为示例
进入HSDB工作目录

使用 HSDB 查看Spring AOP产生的代理类
使用 HSDB 查看Spring AOP产生的代理类
输入 java -classpath sa-jdi.jar "sun.jvm.hotspot.HSDB" 启动HSDB。

使用 HSDB 查看Spring AOP产生的代理类
使用 HSDB 查看Spring AOP产生的代理类
程序启动后,按照上图进行点击操作

使用 HSDB 查看Spring AOP产生的代理类
输入你的Java进程PID

使用 HSDB 查看Spring AOP产生的代理类
经过查询,我的8080端口Java进程PID是 56552

使用 HSDB 查看Spring AOP产生的代理类

进入后会出现下面这幅画面,这时候说明我们的工具已经成功连接上Java进程了。
使用 HSDB 查看Spring AOP产生的代理类
按照下图点击操作
使用 HSDB 查看Spring AOP产生的代理类

看下图,这时候就会出现咱们所有的Class类了

使用 HSDB 查看Spring AOP产生的代理类

这时候搜索框里输入我们的类,并且回车,下面就会出现我们关心的类,以及Spring生成的代理类。
使用 HSDB 查看Spring AOP产生的代理类
点击我们关心的类,进入以后,点击 Create .class File 这时候这个文件会生成到我们启动HSDB的当前目录下。
使用 HSDB 查看Spring AOP产生的代理类
因为我们是在 /d/Java/jdk1.8.0_251/lib 目录下启动的HSDB,所以我们的类都被生成在这里啦,并且会根据我们的包名生成层级文件夹,我们找到对应的class类以后,拖进IDEA里自动反编译,就可以知道生成代码的大致逻辑是怎么样的啦。
使用 HSDB 查看Spring AOP产生的代理类

使用 HSDB 查看Spring AOP产生的代理类

到此结束,有问题,请留言。

问题一 : Attach to HotSpot process 时,卡住不动

查看一下你的控制台命令行,应该是无法加载 sawindbg.dll文件异常,请把java jdk目录下的jre/bin文件下的sawindbg.dll放到jre的bin目录下,例如我的就是 D:\Java\jdk1.8.0_251\jre\bin\sawindbg.dll 复制到 D:\Java\jre1.8.0_251\bin\sawindbg.dll 就可以了。

参考:https://www.lagou.com/lgeduarticle/101827.html