ClassPathXmlApplicationContext流程介绍

这篇博客详细介绍了Spring框架中ClassPathXmlApplicationContext的启动流程,从构造函数调用refresh方法开始,涉及到AbstractApplicationContext的prepareRefresh、obtainFreshBeanFactory、refreshBeanFactory等多个关键步骤,直至bean的实例化和初始化。内容深入解析了BeanDefinition的加载和注册,包括DefaultBeanDefinitionDocumentReader和BeanDefinitionParserDelegate的角色。最后,文章涵盖了从AbstractBeanFactory到AbstractAutowireCapableBeanFactory的bean创建和填充过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

 

                                                                                         

                                                                                   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值