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等注解
相关推荐
海波东5 小时前
某m大厂面经1
java·spring
荆州克莱6 小时前
Mysql学习笔记(一):Mysql的架构
spring boot·spring·spring cloud·css3·技术
程序猿锦鲤10 小时前
减少 try...catch,定义全局统一异常处理器!
java·开发语言·spring
安的列斯凯奇11 小时前
苍穹外卖的分层所用到的技术以及工具+jwt令牌流程图(jwt验证)
流程图
IT枫斗者13 小时前
Springboot配置全局异常通用返回
java·服务器·spring boot·后端·spring·状态模式
Be_Somebody16 小时前
Maven打包项目的精准指定——流程管理
java·spring boot·spring·spring入门
鹿屿二向箔17 小时前
基于SSM(Spring + Spring MVC + MyBatis)框架的快递管理系统
spring·mvc·mybatis
黑马师兄18 小时前
SpringMVC
java·后端·spring
计算机聚众网络18 小时前
008_SSH_Sqlserverl图书管理系统(学生注册 借书 还书)_lwplus87(免费送)
java·spring boot·spring·eclipse·maven·hibernate
cuisidong199719 小时前
Spring声明式事务 编程式事务
java·数据库·spring