美文网首页JAVA进阶JVM
自定义类加载器的好处和应用场景

自定义类加载器的好处和应用场景

作者: Shaw_Young | 来源:发表于2021-10-09 14:19 被阅读0次

1.为什么要自定义类加载器?

  • 隔离加载类
    在某些框架内进行中间件与应用的模块隔离,把类加载到不同的环境。比如:阿里内某容器框架通过自定义类加载器确保应用中依赖的jar包不会影响到中间件运行时使用的jar包。再比如:Tomcat这类Web应用服务器,内部自定义了好几种类加载器,用于隔离同一个Web应用服务器上的不同应用程序。
  • 修改类加载的方式
    类的加载模型并非强制,除Bootstrap外,其他的加载并非一定要引入,或者根据实际情况在某个时间点进行按需进行动态加载。
  • 扩展加载源
    比如从数据库、网络、甚至是电视机机顶盒进行加载。
  • 防止源码泄露
    Java代码容易被编译和篡改,可以进行编译加密。那么类加载也需要自定义,还原加密的字节码。

2.常见的场景

  • 实现类似进程内隔离,类加载器实际上用作不同的命名空间,以提供类似容器、模块化的效果。例如,两个模块依赖于某个类库的不同版本,如果分别被不同的容器加载,就可以分别被不同的容器加载,就可以互补干扰。这个方面的集大成者是Java EE和OSGI、JPMS等框架。
  • 应用需要从不同的数据源获取类定义信息,例如网络数据源,而不是本地文件系统。或者是需要自己操纵字节码,动态修改或者生成类型。

3.注意:

一般情况下,使用不同的类加载器去加载不同的功能模块,会提高应用程序的安全性。但是,如果涉及 Java类型转换,则加载器反而容易产生不美好的事情。在做Java类型转换时,只有两个类型都是由同一个加载器所加载,才能进行类型转换,否则转换时会发生异常。

梦想很模糊,去追,它会渐变清晰。青春励志,奋斗下去别放弃。

相关文章

  • 自定义类加载器的好处和应用场景

    1.为什么要自定义类加载器? 隔离加载类在某些框架内进行中间件与应用的模块隔离,把类加载到不同的环境。比如:阿里内...

  • 类加载器双亲委托机制

    自定义类加载器 MyTest18 本例中,2个类加载器,都委托系统(或应用)加载器去加载,因此重写的findCla...

  • java 类加载器

    自定义类加载器 自定义类加载器运行

  • Java自定义类加载器

    自定义类加载器的应用场景 加密:如果你不想自己的代码被反编译的话。(类加密后就不能再用ClassLoader进行加...

  • 自定义ClassLoad加载网络Class文件

    在java中,所有的类都是通过类加载器所加载的,除根类加载器(bootstrap)外,扩展类加载器和应用类加载器都...

  • Java 类加载器 ClassLoader 详解与双亲委托模型

    摘要 本文主要介绍 Java 类加载器的原理和应用场景。 What is ClassLoader? ClassLo...

  • 类加载阅读目录

    什么是类加载器 类加载器与类的”相同“判断 类加载器种类 双亲委派模型 类加载过程 自定义类加载器 JAVA热部署...

  • 笔记 classloader

    ClassLoader抽象类,主要实现:系统类加载器和自定义加载器。 ClassLoader https://ww...

  • JVM(四)-类加载器

    类加载器大的分类分为两类(JAVA虚拟机规范):引导类加载器、自定义类加载器 引导类加载器(启动类加载器) Boo...

  • java类加载器及其原理

    java类加载器 : java中默认有三种类加载器:引导类加载器,扩展类加载器,系统类加载器(也叫应用类加载器) ...

网友评论

    本文标题:自定义类加载器的好处和应用场景

    本文链接:https://www.haomeiwen.com/subject/qbkrnltx.html