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定义之后,进行自定义解析

  • 相关阅读:
    ubuntu12.04 安装完XRDP显示空白桌面
    安装完CUDA Toolkit,VS2010调试项目控制台一闪而过
    控制台连接oracle11g报ORA-12560异常
    @Autowired和@Resource
    @Autowire和@Resource区别
    springMVC
    springmvc常用注解标签详解
    Spring/SpringMvc 配置文件常用标签解释
    java中volatile不能保证线程安全(实例讲解)
    volatile关键字解析
  • 原文地址:https://www.cnblogs.com/panning/p/9725208.html
Copyright © 2011-2022 走看看