我在这里读到,自从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驱动程序的情况下实现的接口名称.