谈谈对java spi 理解
spi:service provide interface是一套定义了接口由不同第三方去实现的可扩展的机制。
最常用的例子吧,连接数据库大家都不陌生吧,数据库也有很多种类型,oracle,mysql,SqlServer等等
那么每种数据库的连接在实现上肯定也不同。如果每个数据都去使用自己那一套去连接并且使用数据库,那么会造成非常混乱的情况,
于是sun公司就定义了一套接口,而具体的实现交给了不同的数据库厂商,让他们自己去实现。
那么sun公司怎么知道到底哪些厂商实现了这套接口,于是就规定了实现了这套接口的厂商在META-INF/services 里面定义一个文件,文件名为接口的路径,文件内容为具体的实现类的路径。这样jdk就可以很容易的找到具体的实现类代码,从而调用了。
下面来具体的分析一下mysql和oracle的连接过程。
相信这段代码,大家肯定非常熟悉,定义了mysql的url,user,passwd 就可以连接上mysql了,那么来看看DriverManager.getConnection(url,use,passwd);到底是怎么连接上mysql的。如下图: