JDBC 驱动程序注册:Class.forName() 弃用
该问题引发了对使用 Class.forName 注册 JDBC 驱动程序的过时要求的担忧(),如之前的 Stack Overflow 讨论中所建议的。它指出,从 Java 6 开始,DriverManager 使用系统属性“jdbc.drivers”来检索适当的驱动程序,从而消除了此步骤的需要。然而,发帖者在打印属性时遇到空值。
答案:
问题不在于“jdbc.drivers”属性,而在于一个概念Java 6 和 JDBC4 中引入的称为“服务提供者”。这里,JVM 在启动期间自动检测已知接口的实现。兼容的 JDBC 驱动程序利用此机制,允许 DriverManager 轻松注册它们。因此,仅当驱动程序支持此功能时,Class.forName() 才变得多余。
服务注册是由驱动程序 JAR 文件的 META-INF 目录中存在“services”目录触发的。该目录必须包含一个文本文件,其中包含已实现接口的名称(例如 JDBC 驱动程序的“java.sql.Driver”)并指定实现类。
以上是JDBC 驱动程序注册仍然需要 Class.forName() 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!