四种类加载器
1. 引导类加载器 Bootstrap Classloader:C和C++编写,加载Java核心库,提供JVM自身需要的类,并不继承与ClassLoader,没有父加载器。还会加载扩展类和应用程序类加载器。只会加载java、javax、sun开头的类
以下三种都继承于ClassLoader类
2. 扩展类加载器 Extended Classloader:加载jre/lib/ext,也就是扩展目录下的类
3. 应用类加载器 Application Classloader:负责加载classpath下的类,程序中默认的类加载器
4. 自定义加载器
为什么要自定义类加载器
1. 隔离加载类
不同框架使用不同的加载器实现隔离
2. 修改类加载的方式
3. 扩展加载源
扩展加载的来源,除了从本地物理磁盘、网络、jar包中以外,可以扩展到从数据库等等其他地方加载
4. 防止源码泄露
对字节码文件加密,需要使用时用自定义加载器解密
实现自定义加载器
getClassFromCustomPath(name)为自己写的方法:从自定义路径中加载制定类,如果指定路径的字节码文件进行了加密,则需在这个方法中解密,返回二进制字节流。