9

为什么你需要创建一个自定义的类加载器?一个真实世界的例子会很棒!

4

4 回答 4

5

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

其他自定义类加载器用于支持动态代码注入(首选来自 Java 5.0 Instrumentation)

于 2012-10-08T17:45:19.973 回答
4

典型案例有:

  • 在运行时检测/加载类。

  • 加载加密的类。

  • 远程类加载。

于 2012-10-08T17:45:14.940 回答
2

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

于 2012-10-08T17:47:14.817 回答
1

坦率地说,很难想象没有非标准类加载器的 Java 生态系统。许多松散耦合的架构都基于类加载器。我建议花几个小时使用 JSPF(Java 简单插件框架),因为只有一些实践经验对你来说才是真正有价值的。JSPF 非常简单,不仅可以在需要自定义类加载器时了解潜在的情况,还可以感受这种解决方案的强大功能。

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

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

也请浏览以下链接:

于 2012-10-08T21:09:11.053 回答