网上一搜一大把:关于自己实现类加载器,主要是
- 继承
ClassLoader
类 - 将
.class文件
转化为字节数组,就是实现一个loadByte方法 - 其次,重写findClass方法,这个方法是用来loadClass()中,在父类加载器无法加载饿时候(抛出
ClassNotFoundException
)的时候,调用自己的这个方法实现加载。
https://www.cnblogs.com/wxd0108/p/6681618.html
但Tomcat 是 违背双亲委派模型的
- 为了实现隔离,比如:
WebappClassLoader
:各个Webapp私有的类加载器,加载路径中的class只对当前Webapp可见,会加载自己的目录下的class文件而不传个父类; - 然后就是为了实现修改jsp后不用重启服务器,实现了
JasperLoader
,jsp的热插拔
JasperLoader的加载范围仅仅是这个JSP文件所编译出来的那一个.Class文件,它出现的目的就是为了被丢弃:当Web容器检测到JSP文件被修改时,会替换掉目前的JasperLoader的实例,并通过再建立一个新的Jsp类加载器来实现JSP文件的HotSwap功能。