SPRING04_核心组件接口分析Resource具体实现类ResourceLoader资源读取器及策略模式

Posted 所得皆惊喜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SPRING04_核心组件接口分析Resource具体实现类ResourceLoader资源读取器及策略模式相关的知识,希望对你有一定的参考价值。


接下来我们将对SPRING中的核心接口进行一一详解

①. 核心组件接口分析Resource

  • ①. 在Spring给我们暴露对外的操作里面,要么写XML要么写注解,第一个进入我们视线就是Resource(资源)

  • ②. 下面将研究下这个Spring底层是如何定义这个Resource(资源)

②. Resource(资源)是个什么?

  • ①. 如何分析这个组件是个什么东西?可以在idea里面使用快捷键Ctrl+f12,看这个组件有什么方法就行了

  • ②. 按照类名Resource,它叫资源,按照方法它无外乎就来看看这个资源文件(getFile()),包括这个资源的路径在哪(getURL()),能不能打开(isOpen()),能不能读取(isReadable()),如果能读取就给资源准备一个通道(readableChannel() 这个是用nio来做的)

  • ③. 这是Spring家定义的一个Resource资源接口,定义了一些能够快速的读取资源的办法

③. 关于Resource的具体实现类

  • ①. 这个Resource资源接口有了以后,看实现类就会发现 Spring它的这个资源接口暴露了很多东西

  • ②. ContextResource
    (ContextResource.ClassRelativeContextResource):能从相对路径获取资源,只要是ContextResource这一块都是跟Web相关的,如果此时是一个Web项目,就可以从Web项目里面按照相对路径来获取资源)

  • ③. HttpResource
    (Spring的资源也能从HTTP里面去获取资源,也就是说可以请求的是远程服务器去获取资源,请求远程的资源就会被封装成HttpResource)

  • ④. WritableResource
    FileSystemResource:资源不仅能够存在类路径下,还能存到文件系统里面,比如我们的电脑硬盘
    FileUrlResource:这里可以获取任意的位置,可以获取网络,磁盘等的资源
    PathResource:有指定的一些路径,比如写过的classpath:xxxxx 地址

  • ⑤. Spring能够加载资源的方式有很多。每一种不同的资源自然而然就对应资源下的一些接口。Spring暴露出来的Resource资源接口,所有的东西都是一个资源

④. ResourceLoader(资源读取器)

  • ①. ResourceLoader也是一个接口,所以框架都是先定义好了接口抽象,有了接口,就知道了它所有的思想,有了接口就有一万种实现,这也是开闭原则最大的体现

  • ②. 通过源码分析可以看到ResourceLoader接口一个设计模式的关键词叫Strategy interface (策略接口)

  • ③. 资源加载器的作用?

  1. 它的作用就是根据给的一个路径是不是得到一个资源:Resource getResource(String location)
  2. Spring的源代码也写的非常清楚,资源获取的方法有很多
  3. 随便在Resource getResource(String location);这个方法的参数里面传路径,都能够进行一个解析
  • ④. ResourceLoader的实现类
  1. DefaultResourceLoader:这是默认的资源读取器
  2. ClassRelativeResourceLoader:能读取类路径相对路径的资源
  3. FileSystemResourceLoader:能读取文件系统的资源
  4. ServletContextResourceLoader:能读取web项目的资源
  5. PathMatchingResourcePatternResolver:能获取进行路径匹配的资源
  6. 能看到ResourceLoader资源加载器 它唯一的一个作用就是在Resource getResource(String location);这个方法的参数里面传路径,都能够进行一个解析。
  • ⑤. ResourceLoader资源加载器是一个策略接口,体现在哪?
  1. 这个坏境类是AbstractApplicationContext,会在构造方法中对资源加载器进行赋值处理
  2. 资源加载策略(ResourceClassLoader)
  3. 资源加载策略实现(ResourceClassLoader的具体实现类)

以上是关于SPRING04_核心组件接口分析Resource具体实现类ResourceLoader资源读取器及策略模式的主要内容,如果未能解决你的问题,请参考以下文章

Spring核心接口是?

简单了解Spring中常用工具类_java - JAVA

Spring框架-@Resource

Spring学习10-SpringMV核心组件2及SpringMVC项目示例

#yyds干货盘点# Spring核心原理分析之MVC九大组件

flume-ng源码分析-核心组件分析