SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(三)

⑤. 档案馆(DefaultListableBeanFactory)创建好,初始化好以后有一个方法叫loadBeanDefinitions(beanFactory); 也就是加载所有的bean定义信息,bean的定义信息就是xml配置的各种组件,就叫bean的定义信息


SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(三)


SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(三)


⑥. 也就是xml配置的那些组件(bean定义信息),被加载进去了如何加载bean定义信息的呢?


loadBeanDefinitions(beanDefinitionReader); 加载bean的定义信息,它是利用beanDefinitionReader来加载的


beanDefinitionReader这个从XmlBeanDefinitionReader里面来, 它在这里准备了一个beanDefinitionReader(bean定义信息的读取器)


SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(三)


而beanDefinitionReader叫bean定义信息的读取器,也就是读取那些xml内容的读取器,甚至可以给loadBeanDefinitions下面的XmlBeanDefinitionReader这里打一个断点,来看看这个loadBeanDefinitions读取器是咋读方法的—这一块断点我已取消,因为先放在这


SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(三)


然后接下来有个方法叫loadBeanDefinitions加载bean的定义信息,它是把读取器beanDefinitionReader传入进去了,而这个beanDefinitionReader这个读取器里面也有资源加载器


    AbstractXmlApplicationContext里面的:
    // Configure the bean definition reader with this context's
    // resource loading environment.
    beanDefinitionReader.setEnvironment(this.getEnvironment());
    beanDefinitionReader.setResourceLoader(this);//持有ioc容器的环境类
    beanDefinitionReader.setEntityResolver(new ResourceEntityResolver(this));
    
    // Allow a subclass to provide custom initialization of the reader,
    // then proceed with actually loading the bean definitions.
    initBeanDefinitionReader(beanDefinitionReader);
    loadBeanDefinitions(beanDefinitionReader);


这个beanDefinitionReader(读取器)里面又组合了一个叫资源加载器:beanDefinitionReader.setResourceLoader(this)


SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(三)



上一篇:清除 Windows Server 2012(R2) 中的无线网络配置


下一篇:npm install --save 与 npm install --save-dev 的区别