119、Spring容器启动流程是怎样的(配有Spring启动完整流程图)

Spring容器启动流程是怎样的

  1. 在创建Spring容器,也就是启动Spring时:
  2. 首先会进行扫描,扫描得到所有的BeanDefinition对象,并存在一个Map中
  3. 然后筛选出非懒加载的单例BeanDefinition进行创建Bean,对于多例Bean不需要在启动过程中去进行创建,对于多例Bean会在每次获取Bean时利用BeanDefinition去创建
  4. 利用BeanDefinition创建Bean就是Bean的创建生命周期,这期间包括了合并BeanDefinition、推断构造方法、实例化、属性填充、初始化前、初始化、初始化后等步骤,其中AOP就是发生在初始化后这一步骤中
  5. 单例Bean创建完了之后,Spring会发布一个容器启动事件
  6. Spring启动结束
  7. 在源码中会更复杂,比如源码中会提供一些模板方法,让子类来实现,比如源码中还涉及到一些BeanFactoryPostProcessor和BeanPostProcessor的注册,Spring的扫描就是通过BenaFactoryPostProcessor来实现的,依赖注入就是通过BeanPostProcessor来实现的
  8. 在Spring启动过程中还会去处理@Import等注解
相关推荐
村口张大爷4 小时前
Spring Boot Validation Service层验证
java·spring boot·spring
SadSunset5 小时前
(9)基于xml的自动装配
java·笔记·spring
hunter1990106 小时前
Spring线程池ThreadPoolTaskExecutor配置与实践
java·后端·spring
梦子yumeko6 小时前
Spring Ai Alibaba-1.1.0.0-RC1-LlmRoutingAgent
人工智能·spring·r语言
非凡的小笨鱼8 小时前
利用arthas查看java服务里指定对象的大小
java·spring·arthas
廋到被风吹走8 小时前
【Spring】对多线程的支持
java·后端·spring
pyniu8 小时前
redis day1
java·前端·spring
mozhiyan29 小时前
Spring Tool Suite4(STS)下载安装保姆级教程(附安装包)
java·spring·eclipse·sts4·sts4下载教程
没有bug.的程序员9 小时前
JVM 与 Docker:资源限制的真相
java·jvm·后端·spring·docker·容器
中国胖子风清扬10 小时前
Spring AI 深度实践:在 Java 项目中统一 Chat、RAG、Tools 与 MCP 能力
java·人工智能·spring boot·后端·spring·spring cloud·ai