zoukankan      html  css  js  c++  java
  • Spring IOC过程

    https://www.processon.com/diagraming/5c96171fe4b0f88919b98497

    1. AbstractApplicationContext:执行refresh()方法;让子类实现obtainFreshBeanFactory()方法;
    2. 子类AbstractRefreshableApplicationContext实现refreshBeanFactory()方法
      创建IOC容器(DefaultListableBeanFactory);
      委派子类实现loadBeanDefinitions()方法;
    3. AbstractXmlApplicationContext:执行loadBeanDefinition()
      创建XmlBeanDefinitionReader(Bean容器读取器,容器使用该读取器读取Bean定义资源);
      loadBeanDefinitions(beanDefinitionReader);
      setConFigLocations();获取配置文件路径;
      reader.loadBeanDefinitions(configLocations):Bean容器读取器读取定位Bean定义资源.
    4. AbstractBeanDefinitionReader:执行loadBeanDefinitions
      getResourceLoader():获取IOC容器初始化过程中设置的资源加载器
      Resource[] resources = ((ResourcePatternResolver) resourceLoader).getResources(location);将指定位置的 Bean 定义资源文件解析为 Spring IOC 容器封装的资源
      int count = loadBeanDefinitions(resources); 委派调用其子类 XmlBeanDefinitionReader 的方法,实现加载功能
    5. XmlBeanDefinitionReader:执行doLoadBeanDefinitions()
      doLoadDocument:将XML文件转换为DOM对象;
      registerBeanDefinitions:解析Bean的详细过程;
      创建BeanDefinitionDocumentReader:用来对xml格式的BeanDefinition解析;
      DocumentReader.registerBeanDefinitions:具体的解析实现过程由DefaultBeanDefinitionDocumentReader来实现。
    6. DefaultBeanDefinitionDocumentReader:执行registerBeanDefinitions
      创建BeanDefinitionParserDelegate对象用来真正执行解析Bean的工作
      preProcessXml:解析Bean定义之前,进行自定义解析
      parseBeanDefinitons()
        parseDefaultElement:使用Spring的Bean规则解析元素节点
          解析<Import>元素
          解析<Alias>元素
          解析<Bean>元素
            获取BeanDefinitionHolder(BeanDefinitionHolder 是对 BeanDefinition 的封装,即Bean定义的封装类)
              BeanDefinitionParserDelegate.parseBeanDefinitionElement
                parseBeanDefinitionElement:详细对<Bean>元素中配置的 Bean 定义进行解析的地方
            BeanDefinitionReaderUtils.registerBeanDefinition:向Spring IOC容器注册解析得到的Bean定义,这是Bean定义向IOC容器注册的入口
            registry.registerBeanDefinition(beanName, definitionHolder.getBeanDefinition()):向 IOC 容器注册 BeanDefinition
          解析嵌套Bean元素
        postProcessXml:解析Bean定义之后,进行自定义解析

  • 相关阅读:
    OLAP ODS项目的总结 平台选型,架构确定
    ORACLE ORA12520
    ORACLE管道函数
    ORACLE RAC JDBC 配置
    ORACLE RAC OCFS连接产生的错误
    ORACLE 启动和关闭详解
    OLAP ODS项目的总结 起步阶段
    ORACLE RAC 配置更改IP
    ORACLE RAC OCR cann't Access
    ORACLE RAC Debug 之路 CRS0184错误与CRS初始化
  • 原文地址:https://www.cnblogs.com/panning/p/9725208.html
Copyright © 2011-2022 走看看