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