ResourceLoader接口类层级架构图
ResourceLoader接口
定义了获取单个资源的操作 getResource
ResourcePatternResolver 扩展接口
定义了获取多个资源的操作 getResources
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类
加载方式包括:
-
HTTP方式
通过标准的http协议访问web资源,如new UrlResource(“http://地址”);
-
FTP方式
通过ftp协议访问资源,如new UrlResource(“ftp://地址”);
-
系统文件方式
通过file协议访问本地文件系统资源,如new UrlResource(“file:d:/test.txt”);
Classpath加载 -- ClassPathResource类
加载方式包括:
-
classpath:xxx
-
classpath*:xxx
以上对应的类都是实现了Resource接口。
ResourceLoader 接口
资源加载的接口,主要实现类有:
FileSystemResourceLoader
ClassRelativeResourceLoader
DefaultResourceLoader
Spring使用的默认加载器
getResource方法 包含 ClassPathContextResource、ClassPathResource、URLResource三种资源的加载