其实分两步:检查(自底而上)—>加载(自顶向下)
看个例子:Class.forName(“com.mysql.cj.jdbc.Driver”);
但是!!!在JDBC4.0之后就不需要这行代码了,使用SPI的方式加载
SPI的作用就是为这些被实现的接口寻找实现类,以下是SPI的两种方式:
JDBC4.0之后的写法:
到此,可以看到是让当前线程的上下文类加载器去加载Driver.class,那么上下文类加载器又是什么呢?是根加载器?还是扩展加载器?还是应用加载器呢?往下看
这样就实现了在DriverManager里面加载Driver,所以说SPI就能够破坏双亲委派机制