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

简介: SPRIN06_源码之核心组件接口BeanDefinition、Debug创建流程、流程图总结(五)
  • ⑧. 反正现在就是一句话:ioc容器里面有的东西,直接ioc容器传给BeanDefinitionReader慢慢用去


  • ⑨. 然后加载指定配置文件的bean的定义信息,就是利用ResourcePatternResolver资源解析器去加载指定配置文件的所有内容


微信图片_20220108230713.png


⑩. 然后上来加载所有bean的配置,然后它在这递归调用–loadBeanDefinitions,然后这个loadBeanDefinitions方法里面创建EncodedResource–new EncodedResource(resource) 把resource包装了一下传给了EncodedResource,这就是一个装饰模式


  /**
     * Load bean definitions from the specified XML file.
     * @param resource the resource descriptor for the XML file
     * @return the number of bean definitions found
     * @throws BeanDefinitionStoreException in case of loading or parsing errors
     */
    @Override
    public int loadBeanDefinitions(Resource resource) throws BeanDefinitionStoreException {
      return loadBeanDefinitions(new EncodedResource(resource));
    }


⑩①. EncodedResource是一个InputStreamSource,它把原生的Resource一包装,返回了一个InputStreamSource,这是一个适配器模式


微信图片_20220108230744.png


微信图片_20220108230747.png


⑩②. 连接了两个不同的接口,它把Spring底层规定的resource接口最终能跟InputStreamSource来进行对接,因为在底层能够看到所有真正调用方法的时候,它在这会调用resource的方法–如上图,而因为这个原生的这个流InputStream是spring定义的流,而这个InputStream流又包装成了InputStreamReader流,而这个InputStreamReader就方便多了,读取文件的内容肯定要一次读取一行,而不是读一个一个字节,所以这个InputStreamReader会有相应的编码器StreamDecoder,而这个编码器来进行帮忙读取,还要进行边解码StreamDecoder(如下图所示)


微信图片_20220108230807.png


微信图片_20220108230811.png



相关文章
|
20天前
|
Java 应用服务中间件 Nacos
Spring Cloud 常用各个组件详解及实现原理(附加源码+实现逻辑图)
Spring Cloud 常用各个组件详解及实现原理(附加源码+实现逻辑图)
31 0
|
3月前
|
缓存 Java uml
SpringBoot2 | Spring IOC 流程中核心扩展接口的12个扩展点源码分析(十一)
SpringBoot2 | Spring IOC 流程中核心扩展接口的12个扩展点源码分析(十一)
46 0
|
4月前
|
XML Java 数据格式
Spring5源码(26)-ApplicationContext容器refresh过程简析
Spring5源码(26)-ApplicationContext容器refresh过程简析
39 0
|
10月前
|
XML Java 数据格式
Spring 核心类 ConfigurationClassPostProcessor 流程讲解及源码全面分析(二)
Spring 核心类 ConfigurationClassPostProcessor 流程讲解及源码全面分析(二)
53 0
|
5月前
|
XML Java 程序员
spring 容器结构/机制debug分析和几个重要概念以及IOC 的开发模式
spring 容器结构/机制debug分析和几个重要概念以及IOC 的开发模式
48 0
|
9月前
|
XML 缓存 Java
【spring源码系列-02】通过refresh方法剖析IOC的整体流程
【spring源码系列-02】通过refresh方法剖析IOC的整体流程
114 0
|
10月前
|
存储 XML 前端开发
Spring 核心方法 refresh 刷新流程简要概述及相关源码扩展实现(二)(上)
Spring 核心方法 refresh 刷新流程简要概述及相关源码扩展实现(二)
44 0
|
10月前
|
缓存 Java Spring
Spring 核心方法 refresh 刷新流程简要概述及相关源码扩展实现(二)(下)
Spring 核心方法 refresh 刷新流程简要概述及相关源码扩展实现(二)(下)
62 0
|
10月前
|
XML 存储 Java
Spring 核心方法 refresh 刷新流程简要概述及相关源码扩展实现(一)(上)
Spring 核心方法 refresh 刷新流程简要概述及相关源码扩展实现(一)
66 0
|
10月前
|
存储 XML 缓存
Spring 核心方法 refresh 刷新流程简要概述及相关源码扩展实现(一)(下)
Spring 核心方法 refresh 刷新流程简要概述及相关源码扩展实现(一)
53 0