IOC容器的初始化的三种方式
- XmlBeanFactory
- ClassPathXmlApplicationContext
- AnnotationConfigApplicationContext
三种初始化方式流程图:
分析: 由调用图可以看到不论使用哪一种方式去初始化IOC容器, 注册BeanDefinition的工作都是由DefaultListableBeanFactory的registerBeanDefinition(String beanName, BeanDefinition beanDefinition)方法完成的, 在DefaultListableBeanFactory类中维护着一个Map集合: beanDefinitionMap, 这个集合维护着Bean定义对象的信息, 以Bean名称为键; 对于XmlBeanFactory和ClassPathXmlApplicationContext这两种方式初始化容器时都是直接注册BeanDefinition, 而AnnotationConfigApplicationContext会先去注册处理器, 后面在激活处理器类时去注册BeanDefinition
注: 流程图较复杂, 感兴趣的可以仔细分析下, 可以参考流程图中的主线去阅读源码, 有很大帮助; 有不对的地方欢迎指出!
由于解析过程比较复杂, 分为四篇播客进行解析:
- 初始化方式一: XmlBeanFactory
- 初始化方式二: ClassPathXmlApplicationContext
- 初始化方式三: AnnotationConfigApplicationContext[包路径配置方式]
- 初始化方式四: AnnotationConfigApplicationContext[Java配置类方式]
相关文章:
Spring源码解析二 (IOC容器初始化方式一:XmlBeanFactory)
Spring源码解析三 (IOC容器初始化方式二:ClassPathXmlApplicationContext)
Spring源码解析四 (IOC容器初始化方式三: AnnotationConfigApplicationContext[包路径配置方式])
Spring源码解析五 (IOC容器初始化方式四: AnnotationConfigApplicationContext[Java配置类方式])