Java 中的 JDBC 驱动程序注册:澄清对 Class.forName(JDBC_DRIVER) 的需求
据报道,Java 版本 6 及更高版本由于利用了“jdbc.drivers”系统属性。然而,一些开发人员遇到过这样的情况:检索“jdbc.drivers”的值返回 null。
这种差异引发了一个问题:为什么使用 JDBC 的 Java 应用程序在没有显式注册的驱动程序的情况下仍能正常工作?
答案在于 Java 6 和 JDBC 4 中引入的一个称为“服务提供者”的功能。这种机制允许 JVM 在启动期间检测指定接口的实现。符合此概念的 JDBC 驱动程序可以由 DriverManager 自动注册,从而有效地消除了对 Class.forName() 的需要。
服务注册过程依赖于驱动程序 JAR 文件中是否存在“services”目录在 META-INF 目录中。该目录必须包含一个文本文件,命名已实现的接口(对于 JDBC 驱动程序为 java.sql.Driver)以及相应的实现类。
通过遵循服务提供者概念,可以自动注册 JDBC 驱动程序,从而消除了需要显式的 Class.forName() 调用。不过,这仅适用于与服务提供者机制兼容的驱动程序。
以上是为什么某些 Java JDBC 应用程序无需使用'Class.forName()”进行显式驱动程序注册即可工作?的详细内容。更多信息请关注PHP中文网其他相关文章!