1.Spring IOC中ClassPathXmlApplicationContext介绍
调用过程
ClassPathXmlApplicationContext调用构造函数执行refresh()方法,refresh方法的实现在AbstractApplicationContext中。
refresh中执行了prepareRefresh(),它在AbstractApplicationContext中,将 active 属性设置为 true,closed 属性设置为 false。
refresh中执行了obtainFreshBeanFactory(),它在AbstractApplicationContext中。
obtainFreshBeanFactory中执行了refreshBeanFactory(),它在AbstractRefreshableApplicationContext中。加载bean注册bean
其中customizeBeanFactory(beanFactory),它在AbstractRefreshableApplicationContext中。
其中loadBeanDefinitions(beanFactory),它在AbstractXmlApplicationContext中,加载bean到beanfactory中。加载Bean。
其中loadBeanDefinitions(beanDefinitionReader),它在AbstractXmlApplicationContext中。
其中reader.loadBeanDefinitions(Resource... resources),它在AbstractBeanDefinitionReader中。
XmlBeanDefinitionReader中的loadBeanDefinitions(Resource resource)
XmlBeanDefinitionReader中的loadBeanDefinitions(EncodedResource encodedResource)。
XmlBeanDefinitionReader中的doLoadBeanDefinitions
XmlBeanDefinitionReader中的registerBeanDefinitions
DefaultBeanDefinitionDocumentReader中的registerBeanDefinitions
DefaultBeanDefinitionDocumentReader中的doRegisterBeanDefinitions
DefaultBeanDefinitionDocumentReader中的parseBeanDefinitions
DefaultBeanDefinitionDocumentReader中的parseDefaultElement
DefaultBeanDefinitionDocumentReader中的processBeanDefinition 1/4
BeanDefinitionParserDelegate的parseBeanDefinitionElement 1 2 3
BeanDefinitionReaderUtils中的registerBeanDefinition
DefaultListableBeanFactory中的registerBeanDefinition
refresh中执行了prepareBeanFactory,它在AbstractApplicationContext中。
refresh中执行了finishBeanFactoryInitialization,它在AbstractApplicationContext中。
DefaultListableBeanFactory中的preInstantiateSingletons
AbstractBeanFactory中的getBean
AbstractBeanFactory中的doGetBean
AbstractAutowireCapableBeanFactory的createBean
AbstractAutowireCapableBeanFactory的doCreateBean
AbstractAutowireCapableBeanFactory的createBeanInstance
AbstractAutowireCapableBeanFactory的instantiateBean
SimpleInstantiationStrategy的instantiate
AbstractAutowireCapableBeanFactory的populateBean
AbstractAutowireCapableBeanFactory的initializeBean