ClassPathXmlApplicationContext流程介绍

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

                                                                                         

                                                                                   

猜你喜欢

转载自blog.csdn.net/wuyifan1115/article/details/82226295