原文鏈接: JDK動態(tài)代理實現(xiàn)機制 轉(zhuǎn)載請注明出處!
===========================================
本文只對JDK動態(tài)代理的底層實現(xiàn)進行分析,如需了解代理模式和動態(tài)代理的使用請移步:設(shè)計模式—代理模式 動態(tài)代理的兩種實現(xiàn)方式(JDK/Cglib)
在讀代碼之前先清楚兩個概念:
1、Class類存儲的是類的所有信息,包括類的所有方法、屬性、實現(xiàn)接口等。每個類對應(yīng)一個Class對象(單例),Class對象是由classLoader加載出來的,使用雙親委派模型來保證class只會被加載一次。
2、classLoader在加載類的時候不管class文件是從哪里來的,無論是從.class文件、網(wǎng)絡(luò)、數(shù)據(jù)庫類加載器都不關(guān)心。他只關(guān)心給他的class二進制流是不是能夠通過校驗。
說明:以下測試代碼和 動態(tài)代理的兩種實現(xiàn)方式(JDK/Cglib)相同