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 加载到内存中才能被实例化和使用。