双亲委派模型

其实分两步:检查(自底而上)—>加载(自顶向下)

双亲委派模型_第1张图片

看个例子:Class.forName(“com.mysql.cj.jdbc.Driver”);

但是!!!在JDBC4.0之后就不需要这行代码了,使用SPI的方式加载
SPI的作用就是为这些被实现的接口寻找实现类,以下是SPI的两种方式:

JDBC4.0之后的写法:
双亲委派模型_第2张图片
到此,可以看到是让当前线程的上下文类加载器去加载Driver.class,那么上下文类加载器又是什么呢?是根加载器?还是扩展加载器?还是应用加载器呢?往下看
双亲委派模型_第3张图片
这样就实现了在DriverManager里面加载Driver,所以说SPI就能够破坏双亲委派机制

你可能感兴趣的:(java学习,java)