記錄一個代理類分析工具saveGeneratedFiles


作用: 這個字段用於控制是否輸出JDK動態代理自動生成的代理類文件

原因:

如果這個字段的值為true,就生成相關文件並輸出到指定目錄下,ProxyGenerator源碼如下:

 

 使用方法: 

在啟動參數VM中添加屬性: sun.misc.ProxyGenerator.saveGeneratedFiles=true

當調用方法時,就會把相關使用到的代理類的文件輸出的相應目錄

好處:

  通過查看這些自動生成的類文件,可以分析JDK動態代理的執行原理,方便理解.

----------------------以下是補充的第二種方法------------------------------

以上方法可以輸出所有想看或不想看的自動生成代理類源碼,如果嫌棄太多,希望有針對性的輸出某個代理類的源碼,可以采用以下方式:

在代碼中添加以下紅框中邏輯,即可生成指定實例所在類的源碼,然后輸出

 

 紅框中的代碼邏輯是: 生成employeeDao實例所在類的源碼文件.

注意這段代碼生成的是任意實例所在類的源碼文件,也就是說不管是不是代理類,都可以輸出源碼.

(所以只要確定了某個實例是一個代理類的實例,即可生成代理類的源碼.

一般來說,看一個實例是不是代理類的實例,只要看它的類名上是否帶有$proxy字樣,有,就是,沒有,就不是.)

--------------------以下是補充的第三種方法-----------------------------

在main方法中添加一個系統屬性

System.setProperty("sun.misc.ProxyGenerator.saveGeneratedFiles","true");
注意: 是main方法中,而不是test方法中,注意屬性值是字符串true,而不是布爾值true.

以上僅是個人的分析工具記錄,非核心技術總結


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM