SpringBoot IOC容器初始化的全流程

 更新时间:2025年09月16日 14:31:07   作者:小霞在敲代码  
Spring Boot IOC初始化流程核心在AbstractApplicationContext.refresh方法中,依次完成BeanFactory准备、后置处理器执行、Bean加载、Tomcat启动及缓存清理,最终实现容器启动与Bean实例化

SpringBoot IOC容器初始化流程

IOC 容器的初始化,核心工作实在 AbstractApplicationContext.refresh 方法中完成

在方法中主要做这么几件事情

准备 BeanFactory

在这一块会为 BeanFactory 设置很多属性,比如类加载器等等。

执行 BeanFactoryPostProcessors 后置处理器

这一阶段会扫描放入容器中的 Bean 信息,得到 BeanDefinition(只扫描不创建)

注册 BeanProcessors

这一阶段我们自己写的 BeanPostProcessors 会被加载,将来 Bean 实例化好之后需要用到。

启动 tomcat

实例化所有非懒加载的单例 Bean

多例 Bean 以及懒加载 Bean 不会在这个阶段创建,以后用到了才创建。

容器初始化完成后会做一些扫尾工作

清理缓存。

总结

在 IOC 容器初始化中,首先先准备 BeanFactory,执行 BeanFactoryPostProcessors 后置处理器,注册 BeanProcessors 并启动 tomcat,最后通过 BeanFactory 加载所有非懒加载的单例 Bean。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解读为什么不推荐使用keySet()进行遍历HashMap

    解读为什么不推荐使用keySet()进行遍历HashMap

    这篇文章主要介绍了我为什么不推荐使用keySet()进行遍历HashMap的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • Java中@ConditionalOnProperty注解使用

    Java中@ConditionalOnProperty注解使用

    在Spring Boot中,@ConditionalOnProperty注解是一种方便的工具,用于根据应用程序配置文件中的属性值来控制Bean的创建和加载,本文就来介绍一下Java中@ConditionalOnProperty注解使用,感兴趣的可以了解一下
    2023-11-11
  • JAVA使用ffmepg处理视频的方法(压缩,分片,合并)

    JAVA使用ffmepg处理视频的方法(压缩,分片,合并)

    这篇文章主要介绍了JAVA使用ffmepg处理视频的方法,包括视频压缩分片合并功能,通过实例代码讲解的很详细,对java ffmepg处理视频相关知识感兴趣的朋友一起看看吧
    2021-05-05
  • SpringBoot返回统一的JSON标准格式实现步骤

    SpringBoot返回统一的JSON标准格式实现步骤

    这篇文章主要介绍了SpringBoot返回统一的JSON标准格式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • springboot动态加载jar包动态配置实例详解

    springboot动态加载jar包动态配置实例详解

    这篇文章主要给大家介绍了关于springboot动态加载jar包动态配置的相关资料,在项目开发的过程中,有时候需要动态灵活的加载某个jar包并执行其里面的方法的时候,需要的朋友可以参考下
    2023-11-11
  • 数据结构与算法之手撕排序算法

    数据结构与算法之手撕排序算法

    排序算法看似简单,其实不同的算法中蕴涵着经典的算法策略。通过熟练掌握排序算法,就可以掌握基本的算法设计思想,本文主要介绍了Java中的排序算法,需要的朋友欢迎阅读
    2023-04-04
  • Maven jar包下载失败问题的处理方法

    Maven jar包下载失败问题的处理方法

    很多同学在Maven里下载一些依赖的时候,即下载jar包的时候总是会出现一些问题,本文将就这个问题给大家详细的讲解一下,需要的朋友可以参考下
    2023-06-06
  • java利用Future实现多线程执行与结果聚合实例代码

    java利用Future实现多线程执行与结果聚合实例代码

    这篇文章主要给大家介绍了关于java利用Future实现多线程执行与结果聚合的相关资料,Future模式的核心,去除了主函数的等待时间,并使得原本需要等待的时间段可以用于处理其他业务逻辑,需要的朋友可以参考下
    2021-12-12
  • 客户端Socket与服务端ServerSocket串联实现网络通信

    客户端Socket与服务端ServerSocket串联实现网络通信

    这篇文章主要为大家介绍了客户端Socket与服务端ServerSocket串联实现网络通信的内容详解,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-03-03
  • Java实现AES加密和解密方式完整示例

    Java实现AES加密和解密方式完整示例

    这篇文章主要给大家介绍了关于Java实现AES加密和解密方式的相关资料,AES加密为最常见的对称加密算法,是一种区块加密标准,这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用,需要的朋友可以参考下
    2023-10-10

最新评论