不再需要Class.forName(JDBC_DRIVER)?

Gio*_*nJh 7 java sql jdbc

我在这里读到,自从java 6以来你不再需要使用以下命令注册JDBC Driver:

Class.forName(JDBC_DRIVER);
Run Code Online (Sandbox Code Playgroud)

因为DriverManager使用位于系统属性"jdbc.drivers"中的路径 来检索正确的驱动程序.

但是当我做以下时:

System.out.print(System.getProperty("jdbc.drivers"));
Run Code Online (Sandbox Code Playgroud)

null 得到印刷.

你有什么线索为什么我的应用程序正常工作?;)

a_h*_*ame 12

这与该系统属性无关.Java6(和JDBC4)引入了一个称为" 服务提供者 " 的概念,其中JVM在启动期间可以检测到已知接口的实现.符合该标准的驱动程序将由DriverManager自动注册.这就是为什么Class.forName()不再需要 - 但只有当驾驶员支持时.

如果servicesMETA-INF目录中驱动程序的jar文件中有目录,则启动服务注册.该目录需要包含一个文本文件,java.sql.Driver其中包含在包含实现类的JDBC驱动程序的情况下实现的接口名称.

  • @ user986437是的,在类路径上添加JDBC 4驱动程序就足够了.我没有试过多个驱动程序,但我想根据提供的URL选择正确的驱动程序(每个驱动程序支持不同的URL). (2认同)