当我们的类加载器收到一个请求的时候,首先会向上查找最顶层的没有父类的类加载器(启动类加载器),然后会依次向下读取class文件,如果该类加载器读取到class文件的时候,子节点不会再继续读取。
目的:保证一个类在内存中的唯一性。
如何破坏双亲委派机制:
分析:双亲委派模式的源代码在loadclass方法中,所以只需要绕开loadclass方法即可。
1.自定义类加载器,重写loadclass方法。
2:Spi机制绕开loadclass方法,当前线程设定关联类加载器。
案例: JDBC驱动注册
Spi如何绕开loadclass方法:先找到当前类加载器目录下是否有该spi机制对应的配置文件,如果没有的情况下,则不会初始化该类,会报错。
什么是自定义类加载器?