JDBC在加载Driver类时,使用的反射。
但是为什么只是使用Class.forName("com.mysql.jdbc.Driver")进行了初始化。
却没有使用newInstance()对类进行实例化呢 。
明明必须在java.sql.DriverManager中是必须要进行注册的→
让我们看一下JDBC的源码是怎么写的。如下图→
在初始化的Driver类的时候会自动加载静态代码块中的代码。调用了DriverManager的静态方法registerDriver注册了驱动。
所以在我们使用JDBC加载类时,只需要进行类的初始化而并不需要进行类的实例化就可以注册驱动。