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);

 

你可能感兴趣的:(Java,spring,java,spring)