Spring创建和初始化的源码流程分析,真牛
2021/9/9 22:38:00
本文主要是介绍Spring创建和初始化的源码流程分析,真牛,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
[](
)5.1 执行BeanFactoryPostProcessors的方法,先执行其子接口,然后再执行自己的接口
[](
)5.1.1 获取所有的BeanDefinitionRegistryPostProcessor
[](
)5.1.2 按照优先级执行BeanDefinitionRegistryPostProcessor后置处理器
[](
)5.1.2 按照优先级执行BeanFactoryPostProcessors后置处理器,与上面的流程一样
先获取所有,再按照优先级挨个执行
[](
)6. registerBeanPostProcessors: 注册BeanPostProcessors(Bean的后置处理器,来拦截Bean的创建过程)
[](
)6.1 注册步骤如下:
[](
)7.initMessageSource(): 初始化MessageSource(做国际化,消息绑定,消息解析)
messaegSource:取出国际化配置文件中某个Key的值,能按照区域信息获取
[](
)8 initApplicationEventMulticaster() :初始化事件派发器
如果我们需要使用事件派发器,可以选择往容器中放一个,或者直接注入使用spring提供的简单的事件派发器
[](
)9 onRefresh() :留给子容器(子类)
例如可以给容器中多注册一些组件
[](
)10. registerListeners(): 将项目中所有ApplicationListener的监听器注册起来
[](
)11.finishBeanFactoryInitialization(beanFactory): 初始化所有剩下的单实例bean
[](
)11.1 preInstantiateSingletons()初始化剩下的所有单实例bean
这里如果在通过id获取对应bean时,id前面加上&,则会帮我们获取到工厂本身的bean,否则返回对应的bean
[](
)11.1.1 getBean的流程
缓存的map如下:
dogetBean方法中尝试从缓存中获取完单实例bean后:
[](
)11.1.1 createBean()方法流程:
[](
)11.1.1 resolveBeforeInstantiation: 后置处理器,在bean没创建前进行拦截
[](
)11.1.2 后置拦截器拦截完bean的创建,没有返回代理对象后,执行bean的创建流程,下面研究:docreateBean()的流程
createBeanInstance方法探究:
继续:
populateBean方法探究
为bean赋值过程小总结:
initializeBean()方法探究:bean的初始化
回到createBean的方法上来:
然后返回创建完的对象
[](
)重点的docreate()方法总结:
创建bean实例—>调用BeanDefinitionPostProcessors—>
Bean属性赋值—>调用InstantiationAwareBeanPostProcessor–>
Bean初始化—>调用BeanPostProcessor
返回创建好的bean
最后
小编精心为大家准备了一手资料
以上Java高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术
**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](
)**
【附】架构书籍
- BAT面试的20道高频数据库问题解析
- Java面试宝典
- Netty实战
- 算法
BATJ面试要点及Java架构师进阶资料
最后
小编精心为大家准备了一手资料
[外链图片转存中…(img-NF9vfZX4-1631184884362)]
[外链图片转存中…(img-fwNHHgYO-1631184884363)]
以上Java高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术
**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](
)**
【附】架构书籍
- BAT面试的20道高频数据库问题解析
- Java面试宝典
- Netty实战
- 算法
[外链图片转存中…(img-0IK5dQqF-1631184884365)]
BATJ面试要点及Java架构师进阶资料
[外链图片转存中…(img-F1uC2H6x-1631184884366)]
这篇关于Spring创建和初始化的源码流程分析,真牛的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南