SpringBoot的ClassLoader加载机制
在Spring Boot的嵌入式Web容器原理一节中,我们已经介绍了Spring Boot对Tomcat容器的加载过程,本节我们进一步讲解SpringBoot的ClassLoader加载机制。
熟悉Tomcat工作原理的人应该知道,Tomcat内部实现了自定义的类加载器,打破了Java的双亲委派机制,下面我们先看看什么是双亲委派机制。
双亲委派机制
双亲委派机制是指Java的类加载器收到一个类加载请求时,该类加载器首先会把请求委派给父类加载器。每个类加载器都是如此,只有当父类加载器在自己的搜索范围内找不到指定类时,子类加载器才会尝试自己去加载。Java类加载机制如下图所示。
我们通常将类加载器分为下面的三种类型。
● 启 动 类 加 载 器 ( Bootstrap ClassLoader ) : 加 载jre/lib/rt.jar。
● 扩 展 类 加 载 器 ( Extension ClassLoader ) : 加 载jre/lib/ext/*.jar。
● 应 用 程 序 类 加 载 器 ( Application ClassLoader ) : 加 载classpath上指定的类库