Java 何时创建自定义类加载器?

Java 何时创建自定义类加载器?,java,classloader,Java,Classloader,为什么需要创建自定义类加载器?一个真实世界的例子将是伟大的 典型案例包括: 运行时工具/加载类 加载加密类 远程类加载 Java EE服务器和OSGI容器等应用程序服务器使用自定义类加载器来支持动态更新和删除软件 其他自定义类加载器用于支持动态代码注入(最好使用Java 5.0工具)这不是您可能需要自己编写的东西,但您可能会将其用作某些复杂框架的一部分——例如,依赖项注入通常是用类加载器实现的。自定义类加载器的另一个常见用法是在单元测试中:自定义类加载器可用于将被测单元加载的类替换为以可控方式

为什么需要创建自定义类加载器?一个真实世界的例子将是伟大的

典型案例包括:

  • 运行时工具/加载类

  • 加载加密类

  • 远程类加载


    • Java EE服务器和OSGI容器等应用程序服务器使用自定义类加载器来支持动态更新和删除软件


      其他自定义类加载器用于支持动态代码注入(最好使用Java 5.0工具)

      这不是您可能需要自己编写的东西,但您可能会将其用作某些复杂框架的一部分——例如,依赖项注入通常是用类加载器实现的。自定义类加载器的另一个常见用法是在单元测试中:自定义类加载器可用于将被测单元加载的类替换为以可控方式响应的“虚拟”版本(例如,模拟否则很难创建的错误).

      坦率地说,如果没有非标准类加载器,真的很难想象Java生态系统。许多松散耦合的体系结构都基于类装入器。我建议您花几个小时使用JSPF(Java Simple Plugin Framework),因为只有一些实践经验对您来说才是真正有价值的。JSPF非常简单,不仅可以理解潜在的情况,当需要定制类加载器时,还可以感受到这种解决方案的威力

      尝试遵循一个简单的计划:

      • 定义接口(合同)
      • 作为独立的模块/jar提供一个实现
      • 使用JSPF和以前定义的契约来发现可用的实现
      • 用发现的实现做一些有用的事情
      • 了解您拥有松散耦合的系统
      • 了解在本例中如何实际使用类加载器
      请同时浏览以下链接:


      其他自定义类加载器用于支持动态代码注入“它有点像依赖项注入容器吗?它们在运行时更改代码,甚至更改系统类。