天天看點

JDBC為什麼破壞雙親委派模型

詳細見原文 https://www.cnblogs.com/yueshutong/p/11430885.html

講得非常詳細,找了很多文章,就這篇講的非常清楚,是以總結一下

簡單來說

DriverManager位于 $JAVA_HOME中jre/lib/rt.jar 包,由BootStrap類加載器加載,而其Driver接口的實作類是位于服務商提供的 Jar 包,根據類加載機制,當被裝載的類引用了另外一個類的時候,虛拟機就會使用裝載第一個類的類裝載器裝載被引用的類。也就是說BootStrap類加載器還要去加載jar包中的Driver接口的實作類。

由于BootStrap類加載器預設隻負責加載 $JAVA_HOME中jre/lib/rt.jar 裡所有的class,是以需要由子'類加載器(線程上下文加載器)去加載Driver實作,這就破壞了雙親委派模型。

這個線程上下文類加載器就是AppClassLoader,因為在jvm入口sun.misc.Launcher中線程上下文類加載器被設定為AppClassLoader https://blog.csdn.net/briblue/article/details/54973413,是以線程上下文類加載器預設情況下就是系統加載器。

繼續閱讀