https://www.zhihu.com/question/599892510

Spring 的 bean 加载和 JVM 类加载是密不可分的,因为 Spring 的 bean 实例化依赖于 JVM 的类加载机制。

在 JVM 类加载机制中,类被加载分为 3 个阶段:加载阶段、链接阶段和初始化阶段。其中加载阶段是通过类的全限定名在文件系统或网络中找到对应的二进制代码并读入到内存中;链接阶段主要进行验证、准备和解析等操作;初始化阶段则是对静态变量赋初值,执行静态块等操作。

在 Spring 的 bean 加载过程中,当容器扫描到 bean 的定义时,会根据定义中的类路径和类名使用 JVM 类加载机制将这个类加载到内存中,并在初始化阶段执行与 bean 相关的一些操作(如依赖注入、配置属性等)


在 Spring 中,bean 的加载是在 JVM 类加载机制的基础上实现的,因为 Spring 框架中的每个 bean 都是 Java 类,这些类需要被 JVM 加载到内存中才能被实例化和使用。

  1. 配置文件加载:Spring 会读取配置文件,如 XML 文件或注解等,来确定需要加载哪些 bean 以及它们的依赖关系。
  2. 类加载:当 Spring 确定了需要加载的 bean 时,它会使用 JVM 类加载器加载相应的类,包括 bean 类和依赖的其他类。
  3. 实例化:当类被加载到内存中后,Spring 会使用反射机制实例化这些类的对象。