我现在正在测试Proxool连接池(数据库是mysql),我发现一个非常奇怪的情况,即mysql的驱动程序总是可以注册到DriverManager,即使我没有显式调用
Class.forName("com.mysql.jdbc.Driver")
虽然Proxool的驱动程序不能。我查看JDK代码并找到一条线索,即
Service.providers(java.sql.Driver.class)
可以获得mysql的驱动程序而无法获得Proxools。这也许是原因。我的问题是为什么这个方法可以自动找到mysql的驱动程序?
以下是我的测试代码:
public static void main(String[] args) throws Exception{
Iterator drivers = Service.providers(java.sql.Driver.class);
while(it.hasNext()){
System.out.println(it.next());
}
}
结果是:
sun.jdbc.odbc.JdbcOdbcDriver@31d520c4
com.mysql.jdbc.Driver@1f5a3d6b