JVM学习笔记30——线程上下文类加载器实战分析与难点剖析
发布日期:2021-06-29 01:19:00 浏览次数:2 分类:技术文章

本文共 822 字,大约阅读时间需要 2 分钟。

 将当前线程的类加载器设置为扩展类加载器

public static void main(String[] args) {        Thread.currentThread().setContextClassLoader(MyTest26.class.getClassLoader().getParent());        ServiceLoader
loader = ServiceLoader.load(Driver.class); Iterator
iterator = loader.iterator(); while (iterator.hasNext()){ Driver driver = iterator.next(); System.out.println("driver: " + driver.getClass() + ",loader: " + driver.getClass().getClassLoader()); } System.out.println("当前线程上下文类加载器: " + Thread.currentThread().getContextClassLoader()); System.out.println("ServiceLoader的类加载器: " + ServiceLoader.class.getClassLoader()); }

运行发现加载不到mysql的驱动,只能由应用类加载器加载

ServiceLoader是由启动类加载器加载的,那么在双亲委托模型下,驱动也应该是由启动类加载器加载,但是应用的实现不可能写在启动的目录下,因此就用线程上下文类加载破坏双亲委托模型,让应用类加载器去加载驱动的具体实现

 

转载地址:https://blog.csdn.net/yshuoo/article/details/116565558 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JVM学习笔记31——通过JDBC驱动加载深刻理解线程上下文加载器机制
下一篇:JVM学习笔记26——自定义系统类加载器源码分析与forName方法底层剖析

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月27日 18时50分25秒