Spring源码解读01
此UML为ClassPathResource的资源继承体系图
解读:
- InputStreamSource: 提供一个获取输入文件流的方法(getInputStream)。
- Resource:继承自InputStreamSource,并抽象出资源描述符的接口,提供对文件进行描述的方法。
1). boolean exists(); 判断文件是否存在
2). boolean isReadable(); 判断文件是否可读
3). boolean isOpen(); 判断文件是否处于打开状态
4). URL getURL(); 返回资源的URL句柄
5). URI getURI(); 返回资源的URI句柄
6). File getFile(); 获取资源文件
7). long contentLength(); 确定资源内容长度
8). long lastModified(); 确定资源上次修改的时间(timestamp)
9). Resource createRelative(String relativePath) ; 通过该资源创建一个相对该路径的资源
10). String getFilename(); 获取资源文件名
11). String getDescription(); 获取资源文件描述
- AbstractResource: 对抽象资源描述接口的简单实现。
- AbstractFileResolvingResource: 抽象解析基类,用于将URL解析为文件引用的资源
- ClassPathResource: 继承自AbstractFileResolvingResource,主要是对类路径资源的加载
主要包括三个属性:
1). path: 资源路径
2). classLoader: 类加载器(加载资源)
3). clazz: 通过此类的类加载器去加载资源
标记:
this.classLoader.getResource(this.path): 加载根路径下的资源
this.clazz.getResource(this.path): 加载此类路径下的相对路径资源