接上篇继续:SPI : Service Provider Interface
ServiceLoader打破双亲委派
我们知道jdk的核心API(e.g rt.jar)是BootstrapClassLoader加载的,三方提供的jar包是AppClassLoader加载的,那么ServiceLoader是rt.jar中的类,那么对应的加载器就是BootstrapClassLoader。
那么问题来了。
如果一个类由类加载器加载,那么这个类依赖的类也是由相同的类加载器加载的。
很显然,ServiceLoader这里打破了双亲委派机制。
如何做到的呢?
写一段代码做个测试。
public static void main(String[] args) {
ServiceLoader<Driver> loader = ServiceLoader.load(Driver.class

本文探讨了ServiceLoader如何利用SPI机制打破Java类加载器的双亲委派模型,通过特定方式实例化不同类加载器下的类。
最低0.47元/天 解锁文章
1255

被折叠的 条评论
为什么被折叠?



