1. Resource接口
- Spring定义了Resource接口来抽象对低层次的数据的访问。
- 主要有下面的一些方法
boolean exists();
boolean isOpen();
URL getURL() throws IOException;
File getFile() throws IOException;
Resource createRelative(String relativePath) throws IOException;
String getFilename();
String getDescription();
InputStream getInputStream() throws IOException;
其中getInputStream()
每次调用开一个新的输入流,读取数据。
2. 六种Resource实现
URLResource
可以访问HTTP文件、FTP文件、本地文件等ClassPathResource
从类路径获取资源FileSystemResource
从本地文件系统获取资源- ServletContextResource
从Servlet上下文获取资源 - InputStreamResource
直接从输入流获取资源 - ByteArrayResource
从字节数组获取资源
3. ResourceLoader
- ApplicationContext委托ResourceLoader去生成具体的Resource对象
appContext.getResource("str");
- ResourceLoader根据字符串得到Resource对象的策略:
即我们可以指定字符串前缀,来提示ResourceLoader加载什么Resource对象
前缀 | 例子 | 资源对象 |
---|---|---|
classpath | classpath:application.properties | ClassPathResource |
file:// | file:///root/data.txt | FileSystemResource |
http:// | http://www.baidu.com | UrlResource |
- 没有前缀的话,就取决于context来加载。