o

ordin

V1

2022/08/10阅读:26主题:橙心

SpringBoot源码导读

前言

springboot框架非常复杂,看源码一不小心就会陷入进去。

本文将从总览角度出发谈谈对框架的整体理解。

总体分为两步

  • 启动引导
  • 项目运行

启动引导

springboot-启动引导
springboot-启动引导

启动引导核心就是把打包好的jar包中的所有class对象进行解析,并将解析后的类对象封装入类加载器中。

经过该流程,我们的项目就可以通过类加载器实现所有类的使用了。

项目运行

springboot-启动流程
springboot-启动流程

启动的核心流程就是IOC。

其余AOP、中间件等只不过是基于IOC后的bean对象,并对其功能进行拓展。

这里需要注意两个重要的容器。

  • beanDefinitionMap
    • bean对象的描述文件
    • 通过解析注解、xml、配置文件等方式完成map的填充
  • singletonObjects
    • bean的单例对象

针对这两个容器的处理,spring使用很多拓展点,比较核心的是以下2个处理器。

  • BeanDefinitionRegistryPostProcessor
    • 完成bean扫描加载
    • 封装定义描述类,以供后续bean的实例化
  • InstantiationAwareBeanPostProcessor
    • 在bean实例化、初始化的前置后置进行处理
    • 完成bean的依赖解析

以上就是总体的思路,有了总体思路就不至于在复杂的细节中迷失方向。

也即软件开发的经典模式,自顶向下 逐步求精

分类:

后端

标签:

Java

作者介绍

o
ordin
V1