spring源碼------BeanDefinition的封裝

分析ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();

到本類方法後 找到核心方法refreshBeanFactory();

具體代碼在AbstractRefreshableApplicationContext類,因爲最初的跟進方法是由xml方式的啓動的spring工程,loadBeanDefinitions(解析xml,並把xml中的標籤封裝成BeanDefinition,也有通過註解加載,總之就是將一切需要初始化的bean封裝成BeanDefinition),通過用XmlBeanDefinitionReader 的loadBeanDefinitions 來加載對象,繼續向下走,就能找到一個很重要的部分registerBeanDefinitions方法,註冊BeanDefinition最重要的部分之一就是將BeanDefinition放到beanDefinitionMap(單例註冊表)裏,在之後的流程中非常重要的的一個map(key是beanname,value是BeanDefinition),還有beanDefinitionNames,所有的name的list集合,這兩個容器在之後的流程中很重要

                //把beanDefinition緩存到map中
				// Still in startup registration phase
				this.beanDefinitionMap.put(beanName, beanDefinition);

				//把beanName放到beanDefinitionNames list中,這個list着重記住,bean實例化的時候需要用到
				this.beanDefinitionNames.add(beanName);
				this.manualSingletonNames.remove(beanName);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章