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等注解
相关推荐
张小洛3 小时前
Spring 常用类深度剖析(工具篇 04):CollectionUtils 与 Stream API 的对比与融合
java·后端·spring·spring工具类·spring utils·spring 类解析
算.子3 小时前
【Spring AI 实战】七、Embedding 向量化与向量数据库选型对比
人工智能·spring·embedding
YanDDDeat4 小时前
【Spring】事务注解失效与传播机制
java·后端·spring
ywf12154 小时前
Spring aop 五种通知类型
java·前端·spring
隐退山林4 小时前
JavaEE进阶:Spring Web MVC入门(1)
前端·spring·java-ee
砍材农夫4 小时前
spring-ai 第十二mcp server调用入门(http协议)
人工智能·spring·http
952364 小时前
SpringMVC
后端·学习·spring
一叶飘零_sweeeet4 小时前
Spring AI 与 Spring AI Alibaba怎么选?
java·spring·spring ai
我登哥MVP5 小时前
【SpringMVC笔记】 - 8 - 文件上传与下载
java·spring boot·spring·servlet·tomcat·maven
dLYG DUMS5 小时前
Spring Cloud Data Flow 简介
后端·spring·spring cloud