大学的时候就学过了JDBC,当时一知半解,现在来搞懂以下详细的注册的原理。
JavaWeb的老师教了以下这句代码,说是注册驱动,但是原理是什么是没有细说的。
Class.forName("com.mysql.jdbc.Driver");
查看jdbc jar包的代码,如下
public class Driver extends com.mysql.cj.jdbc.Driver { public Driver() throws SQLException { } static { System.err.println("Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary."); } }
再找到
com.mysql.cj.jdbc.Driver这个包
代码如下所示:
public class Driver extends NonRegisteringDriver implements java.sql.Driver { public Driver() throws SQLException { } static { try { DriverManager.registerDriver(new Driver()); } catch (SQLException var1) { throw new RuntimeException("Can't register driver!"); } } }
可以看到,使用了static代码块,在加载类(Class.forName)的时候,就对jdbc驱动进行了注册。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)