Spring配置文件的加载、解析
Spring的核心流程是读取配置文件,解析并封装成BeanDefinition,并将所有的BeanDefinition收集到一个叫DefaultListableBeanFactory的容器中。
一、setConfigLocation
设置配置路径方便后续对其进行解析
二、refresh方法,解析并封装BeanDefinition
该方法中有几个重要的方法
1.obtainFreshBeanFactory() 解析配置文件,并解析bean标签收集封装成BeanDefinition,将BeanDefinition封装到DefaultListableBeanFactory中
2.prepareBeanFactory()
初始化一些基本的类到BeanFactory中,或者将该BeanFactory注入到其他组件中,如
Resolver、Registrar、Processor、Aware、Dependency,下图所示
3.postProccessBeanFactory()
添加web相关的ServletContextAwareProcessor到容器
4.invokeBeanFactoryPostProcessors()
获取容器中所有实现BeanDefinitionRegistryPostProcessor的类对象(字面理解就是BeanDefinition的注册器),并完成postProcessBeanDefinitionRegisry的方法调用,最终完成BeanDefinition的注册
5.registerBeanPostProccessors
获取所有BeanPostProcessor的BeanDefinition对象,再通过getBean进行实例化BeanPostProcessor对象,然后按照排序规则重新封装成BeanPostProcessor对象集合
6.finishBeanFactoryInitialization
对非抽象的、单例的、非懒加载的BeanDefinition进行getBean实例化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~