在练习JDBC时,对Class.forName("com.jdbc.mysql.Driver")的作用不是很了解,想要弄清楚它的作用,必须从源代码入手
package com.mysql.cj.jdbc;
import java.sql.SQLException;
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
//
// Register ourselves with the DriverManager
//
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}
/**
* Construct a new driver and register it with DriverManager
*
* @throws SQLException
* if a database error occurs.
*/
public Driver() throws SQLException {
// Required for Class.forName().newInstance()
}
}
从源代码中可以看到,使用Class.forName("com.jdbc.mysql.Driver")加载类的时候,Driver类静态代码块中的会执行,作用是将驱动注册到DriverManager里