记录一个代理类分析工具saveGeneratedFiles

Posted wangxuejian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录一个代理类分析工具saveGeneratedFiles相关的知识,希望对你有一定的参考价值。

作用: 这个字段用于控制是否输出JDK动态代理自动生成的代理类文件

原因:

如果这个字段的值为true,就生成相关文件并输出到指定目录下,ProxyGenerator源码如下:

技术图片

 

 使用方法: 

在启动参数VM中添加属性: sun.misc.ProxyGenerator.saveGeneratedFiles=true

当调用方法时,就会把相关使用到的代理类的文件输出的相应目录

好处:

  通过查看这些自动生成的类文件,可以分析JDK动态代理的执行原理,方便理解.

----------------------以下是补充的第二种方法------------------------------

以上方法可以输出所有想看或不想看的自动生成代理类源码,如果嫌弃太多,希望有针对性的输出某个代理类的源码,可以采用以下方式:

在代码中添加以下红框中逻辑,即可生成指定实例所在类的源码,然后输出

技术图片

 

 红框中的代码逻辑是: 生成employeeDao实例所在类的源码文件.

注意这段代码生成的是任意实例所在类的源码文件,也就是说不管是不是代理类,都可以输出源码.

(所以只要确定了某个实例是一个代理类的实例,即可生成代理类的源码.

一般来说,看一个实例是不是代理类的实例,只要看它的类名上是否带有$proxy字样,有,就是,没有,就不是.)

以上仅是个人的分析工具记录,非核心技术总结

以上是关于记录一个代理类分析工具saveGeneratedFiles的主要内容,如果未能解决你的问题,请参考以下文章

AOP代理分析

动态代理与子类代理

mybatis源码分析之04Mapper接口的动态代理

java动态代理实现与原理详细分析

关于网络抓包的一些记录

java动态代理实现与原理详细分析