前言
springboot框架非常复杂,看源码一不小心就会陷入进去。
本文将从总览角度出发谈谈对框架的整体理解。
总体分为两步
- 启动引导
- 项目运行
启动引导
启动引导核心就是把打包好的jar包中的所有class对象进行解析,并将解析后的类对象封装入类加载器中。
经过该流程,我们的项目就可以通过类加载器实现所有类的使用了。
项目运行
启动的核心流程就是IOC。
其余AOP、中间件等只不过是基于IOC后的bean对象,并对其功能进行拓展。
这里需要注意两个重要的容器。
- beanDefinitionMap
- bean对象的描述文件
- 通过解析注解、xml、配置文件等方式完成map的填充
- singletonObjects
- bean的单例对象
针对这两个容器的处理,spring使用很多拓展点,比较核心的是以下2个处理器。
- BeanDefinitionRegistryPostProcessor
- 完成bean扫描加载
- 封装定义描述类,以供后续bean的实例化
- InstantiationAwareBeanPostProcessor
- 在bean实例化、初始化的前置后置进行处理
- 完成bean的依赖解析
以上就是总体的思路,有了总体思路就不至于在复杂的细节中迷失方向。
也即软件开发的经典模式,自顶向下 逐步求精。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名,转载请标明出处
最后编辑时间为:
2022-08-10
a