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等注解
相关推荐
ZSYP-S7 分钟前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
qxlxi1 小时前
【Spring事务】深入浅出Spring事务从原理到源码
spring
路在脚下@2 小时前
Spring Boot @Conditional注解
java·spring boot·spring
小蜗牛慢慢爬行5 小时前
使用 AOP 在 Spring Boot 中实现跟踪和日志记录
java·开发语言·spring boot·后端·spring·日志记录
奕_奕6 小时前
SpringMVC
spring
武子康6 小时前
Java-33 深入浅出 Spring - FactoryBean 和 BeanFactory BeanPostProcessor
java·开发语言·后端·spring·springboot·springcloud
Milk夜雨7 小时前
Java旅程(五)Spring 框架与微服务架构 & 了解 JVM 内部原理和调优
java·开发语言·spring
Seven977 小时前
Spring事务管理深度解析-从实践到原理
java·spring
解梦者8 小时前
Spring(七)Spring Cloud----Feign、Zuul和Apollo
spring·spring cloud·feign·apollo·zuul
瓜牛_gn8 小时前
苍穹外卖项目Day02代码结构深度解析
java·spring