You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring ApplicationContext创建与单例类内部实现机制技术咨询

Spring单例Bean创建逻辑:预期与实际流程对比

最近我一直在深挖Spring框架内部单例Bean的创建实现逻辑,原本对这个流程有自己的预期,但实际跟踪源码后发现和想象的不太一样,在这里整理分享一下:

预期流程

我原本以为Spring的单例创建会遵循这样的步骤:

  • 遍历XML配置中声明的所有相关类
  • 基于这些类构建完整的依赖关系图
  • 最后遍历这个依赖树,按照依赖顺序逐个创建Bean实例

实际观察到的流程

但实际跟踪后,发现流程是这样的:

  • 第一步同样会遍历XML里声明的相关类,但这一步核心是建立类名与BeanInfo(类元数据)的映射关系,把每个Bean的元信息(比如类类型、依赖信息、作用域等)先存储到容器中
  • 完成元数据映射后,Spring会逐个遍历这些类,重点检查它们的构造方法:
    • 会先判断构造方法的参数是否对应容器中的其他Bean依赖,如果有,会优先去尝试获取或触发依赖Bean的创建
    • 如果是无参构造方法,Spring会直接通过反射完成实例化;如果是带参构造,会根据参数的类型、名称去匹配容器中已有的Bean,必要时会先创建依赖的Bean实例
    • 整个过程并不是先完整构建好全量依赖图再统一创建,而是边检查构造方法边处理依赖,按需创建Bean

内容的提问来源于stack exchange,提问作者vidzi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:23:40