我刚刚了解了java.sql package。它使用Class.forName()动态加载扩展DriverManager的驱动程序。
然后我们使用DriverManager.getConnection()方法获得连接。

那么整个事情如何运作?
DriverManager类如何知道如何在不使用实际驱动程序的类名的情况下获取连接。

我们也可以将Class.forName()用于自定义应用程序...如果通过示例进行解释,我将非常高兴。

最佳答案

Class.forName只需加载一个类,包括运行其静态初始化程序,如下所示:

class Foo {
    static {
        System.out.println("Foo initializing");
    }
}

public class Test {
    public static void main(String [] args) throws Exception {
        Class.forName("Foo");
    }
}

您正在谈论的所有其余过程都是特定于JDBC的。该驱动程序-实现Driver,而不扩展DriverManager-只需使用DriverManager.registerDriver注册一个适当的实例。然后,当DriverManager需要为特定的连接字符串找到驱动程序时,它将依次在每个已注册的驱动程序上调用connect,直到一个成功并返回非空连接为止。

请注意,这种注册驱动程序的方式相当过时-请查看 DriverManager 的文档,以获取获取数据源的更现代的方法。

关于java - Class.forName()如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4202252/

10-10 02:49