从这个来源我读到:
您可能有使用 JDBC 驱动程序的经验。例如,类加载器尝试加载和链接“org.gjt.mm.mysql”包中的驱动程序类。如果成功,则调用静态初始化程序。
Class.forName("org.gjt.mm.mysql.Driver");
Connection con = DriverManager.getConnection(url,"myLogin", "myPassword");
让我们看看为什么需要 Class.forName() 将驱动程序加载到内存中。所有 JDBC 驱动程序都有一个向 DriverManager 注册自身的静态块,而 DriverManager 仅具有静态初始化程序。
MySQL JDBC 驱动程序有一个静态初始化程序,如下所示:
static {
try {
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
} }
这是否意味着 DriverManager 是一个 Singleton 类?