美文网首页
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