一級(jí)標(biāo)題
- 從META-INF/services/java.sql.Driver文件得到實(shí)現(xiàn)類名字DriverA
Class.forName("xx.xx.DriverA")來加載實(shí)現(xiàn)類 - Class.forName()方法默認(rèn)使用當(dāng)前類的ClassLoader,JDBC是在DriverManager類里調(diào)用Driver的,當(dāng)前類也就是DriverManager,它的加載器是BootstrapClassLoader。
- 用BootstrapClassLoader去加載非rt.jar包里的類xx.xx.DriverA,就會(huì)找不到
4.要加載xx.xx.DriverA需要用到AppClassLoader或其他自定義ClassLoader
最終矛盾出現(xiàn)在,要在BootstrapClassLoader加載的類里,調(diào)用AppClassLoader去加載實(shí)現(xiàn)類
這個(gè)原因?qū)е聼o法破壞雙親委派機(jī)制
spi, jdbc,osgi都屬于破壞雙親委派機(jī)制