四種類加載器
1. 引導類加載器 Bootstrap Classloader:C和C++編寫,加載Java核心庫,提供JVM自身需要的類,并不繼承與ClassLoader,沒有父加載器。還會加載擴展類和應用程序類加載器。只會加載java、javax、sun開頭的類
以下三種都繼承于ClassLoader類
2. 擴展類加載器 Extended Classloader:加載jre/lib/ext,也就是擴展目錄下的類
3. 應用類加載器 Application Classloader:負責加載classpath下的類,程序中默認的類加載器
4. 自定義加載器
為什么要自定義類加載器
1. 隔離加載類
不同框架使用不同的加載器實現隔離
2. 修改類加載的方式
3. 擴展加載源
擴展加載的來源,除了從本地物理磁盤、網絡、jar包中以外,可以擴展到從數據庫等等其他地方加載
4. 防止源碼泄露
對字節碼文件加密,需要使用時用自定義加載器解密
實現自定義加載器
getClassFromCustomPath(name)為自己寫的方法:從自定義路徑中加載制定類,如果指定路徑的字節碼文件進行了加密,則需在這個方法中解密,返回二進制字節流。