DriverManager如何获取jdbc驱动程序类的实例

时间:2012-10-16 07:10:51

标签: java design-patterns jdbc

Class.forName用于实例化驱动程序类。 Class.forName没有对象,它只是实例化驱动程序类实例。如果是这样,DriverManager类将如何获取实例化驱动程序类的引用?

3 个答案:

答案 0 :(得分:3)

Class.forName(“X”)导致名为X的类被动态加载, 基本上调用forName(“X”)会导致名为X的类被初始化(即,JVM在类加载后执行其所有静态块)。

要回答您的问题,JVM会执行静态块,驱动程序会使用DriverManager注册自己。

以下链接对此过程进行了详细说明: http://www.xyzws.com/Javafaq/what-does-classforname-method-do/17

答案 1 :(得分:1)

请参阅Driver界面的javadoc

它说,

  

当加载Driver类时,它应该创建自己的实例   并使用DriverManager注册它。这意味着用户可以   通过调用

加载并注册驱动程序      

的Class.forName( “foo.bah.Driver”)

答案 2 :(得分:0)

来自javadoc

  

调用方法getConnection时,DriverManager会   尝试从加载的那些中找到合适的驱动程序   初始化和使用相同的类加载器显式加载的那些   作为当前的applet或应用程序。

初始化时加载的

驱动程序:: DriverManager类将尝试加载“jdbc.drivers”系统属性中引用的驱动程序类

通过Class.forName(“driver.name”);

显式加载的驱动程序