1、什么是双亲委派机制?
从双亲委派机制模型中我们可以知道:
双亲委派模型
启动类加载器<-扩展类加载器<-程序应用类加载器<-自定义类加载器
双亲委派模型的工作过程是:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。
好处:
避免类的重复加载
保护程序安全,防止核心API被随意篡改
2、破坏双亲委派机制
1)自定义类加载器,重写classLoader方法
2)SPI机制绕开loadclass方法。当前线程设定关联类加载器。
3、什么是SPI机制?
Spi 机制加载第三方扩展的jar包类初始化。
mysql, dubbo rpc
SPi机制的原理:
java SPI 全称Service Provider Interface,
是java提供的一套用来被第三方实现的API,他可以用来启用框架扩展和替换组件。
实际上是基于接口编程+策略模式+配置文件 组合实现的动态加载机制。