IOC核心为BeanFactory接口,beandefinition装载过程,分析流程如下:
1、从ClassPathXmlApplicationContext为切入点,找到父类AbstractRefreshableApplicationContext,进入refreshBeanFactory()
2、进入loadBeanDefinitions(beanFactory);
3、loadBeanDefinitions(beanDefinitionReader);
4、reader.loadBeanDefinitions(configResources);
5、counter += loadBeanDefinitions(resource);
6、doLoadBeanDefinitions(inputSource, encodedResource.getResource());
7、 registerBeanDefinitions(doc, resource);
8、documentReader.registerBeanDefinitions(doc, createReaderContext(resource));
9、parseBeanDefinitions(root, delegate);
10、parseDefaultElement(ele, delegate);
11、processBeanDefinition(ele, delegate);
12、delegate.parseBeanDefinitionElement(ele)从文件中加载为BeanDefinitionHolder,注册BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, getReaderContext().getRegistry());
13、registry.registerBeanDefinition(beanName, definitionHolder.getBeanDefinition());
14、this.beanDefinitionMap.put(beanName, beanDefinition);