在練習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裏