美文网首页
JAVA类加载机制

JAVA类加载机制

作者: 不存在的里皮 | 来源:发表于2019-06-07 03:08 被阅读0次

java类加载图解

双亲委派的破坏

参考以JDBC为例谈双亲委派模型的破坏
Class.forName("com.mysql.jdbc.Driver");调用了Driver类的static块代码。后者调用了DriverManager.registerDriver(new Driver());

DriverManager类内:
经过辗转,调用了ClassLoader cl = Thread.currentThread().getContextClassLoader();
又辗转作为参数传给c = Class.forName(cn, false, loader);中的loader。

  • 这里,DriverManager是父类,是用BootstrapLoader加载的。而传入的却是线程的加载器(一般默认是AppClassLoader)。
  • 这是因为,父类加载器加载的类,在遵循双亲委派时,根据全盘负责定理,只能调用父类加载器来加载。
  • 那么,当需要加载子类加载器才能加载的类时,就得破坏双亲委派机制,显式地传入子类加载器。

相关文章

网友评论

      本文标题:JAVA类加载机制

      本文链接:https://www.haomeiwen.com/subject/wzgpxctx.html