【发布时间】:2014-10-24 15:55:35
【问题描述】:
我试图准确理解 Java 的服务提供者机制如何工作以找到合适的 JDBC 驱动程序。这是我目前所拥有的:
由于 Class.ForName 不再用于显式加载 JDBC Driver ,Java 将从传递给 getConnection 方法的数据库 url 字符串中知道它需要什么类型的驱动程序。例如,连接到 oracle 数据库的数据库 url 是这样的:
public static final String DB_URL = "jdbc:oracle:thin@//localhost:1521/ORCL";
DriverManager 然后会在项目类路径中指定的 jar 中查找 oracle 驱动程序的实现。它将在每个 jar 的META-INF/Services 目录中查找驱动程序配置文件(其中将是实际驱动程序类的名称)。 Class Loader 将加载它找到的第一个匹配项并忽略其余部分。
上面的工作准确吗?如果我遗漏了什么或出错了,请告诉我。
【问题讨论】: