`

java SPI破坏双亲委派模型

    博客分类:
  • java
 
阅读更多

Java 在核心类库中定义了许多接口,并且还给出了针对这些接口的调用逻辑,然而并未给出实现。开发者要做的就是定制一个实现类,在 META-INF/services 中注册实现类信息,以供核心类库使用。

java.sql.Driver 是最为典型的 SPI 接口,java.sql.DriverManager 通过扫包的方式拿到指定的实现类,完成 DriverManager的初始化。

等等,似乎有什么不对,根据双亲委派的可见性原则,启动类加载器 加载的 DriverManager 是不可能拿到 系统应用类加载器 加载的实现类 ,这似乎通过某种机制打破了双亲委派模型。

为什么说 SPI破坏了双亲委派模型, 1 因为spi 中的api借口 由jdk提供,jdk的类库由Bootstrap ClassLoader类加载器加载, 而spi接口的实现却是在各个服务商自己提供,由应用程序自己去加载 2 jdk的api 类加载器是无法加载 spi实现类的,应该是破坏了 双亲委托模型 使用子类去加载实现的

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics