Spring - Resource及ResourceLoader

ResourceLoader接口类层级架构图

Spring - Resource及ResourceLoader_第1张图片
ResourceLoader.png

ResourceLoader接口

定义了获取单个资源的操作 getResource

Spring - Resource及ResourceLoader_第2张图片
ResourceLoader.png

ResourcePatternResolver 扩展接口

定义了获取多个资源的操作 getResources

Spring - Resource及ResourceLoader_第3张图片
ResourcePatternResolver .png

PathMatchingResourcePatternResolver类

实现了ResourcePatternResolver 接口

其中AbstractApplicatonContext实现了ResourcePatternResolver接口,
具体实现使用了PathMatchingResourcePatternResolver来实现:

//初始化ResourcePatternResolver接口的实现类PathMatchingResourcePatternResolver
public AbstractApplicationContext() {
    this.resourcePatternResolver = getResourcePatternResolver();
}

//实现ResourcePatternResolver接口
@Override
public Resource[] getResources(String locationPattern) throws IOException {
     return this.resourcePatternResolver.getResources(locationPattern);
}

Spring里有几种加载资源方式,常用的有:

URL加载 -- URLResource类

加载方式包括:

  1. HTTP方式

    通过标准的http协议访问web资源,如new UrlResource(“http://地址”);

  2. FTP方式

    通过ftp协议访问资源,如new UrlResource(“ftp://地址”);

  3. 系统文件方式

    通过file协议访问本地文件系统资源,如new UrlResource(“file:d:/test.txt”);

Classpath加载 -- ClassPathResource类

加载方式包括:

  1. classpath:xxx

  2. classpath*:xxx

以上对应的类都是实现了Resource接口。

ResourceLoader 接口

资源加载的接口,主要实现类有:

FileSystemResourceLoader

ClassRelativeResourceLoader

DefaultResourceLoader

Spring使用的默认加载器
getResource方法 包含 ClassPathContextResource、ClassPathResource、URLResource三种资源的加载

你可能感兴趣的:(Spring - Resource及ResourceLoader)