本篇我们来聊聊数据库驱动是如何工作的
下面我们以mysql驱动8.0.13来讲述
先来看看驱动的加载
Class.forName("com.mysql.cj.jdbc.Driver");
相信这一段代码大家都很熟悉,加载一个类,那它做了什么呢?
大家都知道加载一个类,会执行他的静态块的,如果你问为什么?
public static Class<?> forName(String className)
throws ClassNotFoundException {
Class<?> caller = Reflection.getCallerClass();
return forName0(className, true, ClassLoader.getClassLoader(caller), caller);
}
重点就是true指明了类加载时执行静态块。
好,那么com.mysql.cj.jdbc.Driver这个类静态块到底在做什么呢?!
static {
try {
java.sql.D