我在这里读到,从 java 6 开始,您不再需要使用以下方式注册 JDBC 驱动程序:
Class.forName(JDBC_DRIVER);
因为 DriverManager 使用位于系统属性中的路径“jdbc.驱动程序”以检索正确的驱动程序。
但是当我执行以下操作时:
System.out.print(System.getProperty("jdbc.drivers"));
null
被打印。
您知道为什么我的应用程序可以正常工作吗? ;)
这与该系统属性无关。 Java6(和 JDBC4)引入了一个称为“服务提供者“ JVM 在启动期间可以检测到已知接口的实现。符合该规范的驱动程序将由 DriverManager 自动注册。这就是为什么Class.forName()
不再需要 - 但前提是驱动程序支持。
如果有则启动服务注册services
目录位于 META-INF 目录内的驱动程序 jar 文件中。该目录需要包含一个文本文件,其中包含在 JDBC 驱动程序的情况下实现的接口的名称java.sql.Driver
包含实现类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)