一.SpringMVC 初始化入口
SpringMVC启动主要是ContextLoaderListener类,容器启动时会调用ContextLoaderListener的contextInitialized方法,继而实现开始初始化
接着调用ContextLoaderListener的configureAndRefreshWebApplicationContext方法,接着调用refresh方法初始化beanFactory
二.bean发现并注册
1.AbstractApplicationContext的refresh方法是beanFactory的初始化加载
2.接着判断容器内是否已初始化beanFactory,如果有的需要清除,然后创建beanFactory
3.然后将构造XmlBeanDefinitionReader对象
4.Resource定位资源文件位置
5.将资源文件转化为输入流
6.将输入流对象转换为Document,然后生成BeanDefinitionDocumentReader对象
7.BeanDefinitionParserDelegate这个对象目前不是很了解什么意思,以后再研究,现在开始解析xml了
8.解析XML元素,解析节点是Element对象实例
9.判断节点类型,如果是bean元素就开始注册到容器
生成BeanDefinitionHolder
BeanDefinitionHolder的构造过程,不详述
10.bean注册开始
容器注册bean,实际是一个ConcurrentHashMap的对象,最终会在DefaultListableBeanFactory里面实现