Spring 源码深度解析(第 2 版)读书笔记(五)ApplicationContext下的加载过程
之前学习了BeanFactoy的创建过程和Bean的生命周期之后,这次将看看平时经常使用ApplicationContext和BeanFactory是什么关系。
从new一个ApplicationContext开始
进入的第一个方法看看:
进入第二方法,也是最重要的一个方法,这个方法中有十二个方法,描述着整个ApplicationContext的加载过程。
然后我们一个一个进去看看,容器刷新过程,都做了哪些工作
第一个:prepareRefresh
第二个方法:ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();
第三个方法:prepareBeanFactory(beanFactory);
第四个方法:postProcessBeanFactory(beanFactory);
第五个方法:invokeBeanFactoryPostProcessors(beanFactory);
第六个方法:registerBeanPostProcessors(beanFactory);
第七个方法:initMessageSource();
第八个方法:initApplicationEventMulticaster();
第九个方法:onRefresh();
第十个方法:registerListeners();
第十一个方法:finishBeanFactoryInitialization(beanFactory);
进入下一层
第十二个方法:finishRefresh();
到这里,ApplicationContext的创建过程,也就看完了,在有着对BeanFactory和Bean生命周期的了解的前提下,看容器刷新过程还是比较轻松的,虽然一些部分没搞懂,有可能是自身对于spring的使用还不够深入导致的。
在ApplicationContext中,我们可以看到,ApplicationContext其实就是对BeanFactory的一种功能扩展,以具备Bean的管理的基础上,进一步做了延伸,在里面可以发现,对于BeanFactoryPostProcessor和BeanPostProcessor,我们平时使用的注解的实现,最后很多都是由它们来实现的。
功力尚浅,它们两个的作用应该不止于此,下一步继续探索。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?