001 Resource专题
Posted trekxu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了001 Resource专题相关的知识,希望对你有一定的参考价值。
一 . 概述
在spring提出了一个Resource接口,其描述了对资源的统一操作.
另外提供了一系列的实现,我们可以使用这些实现类完成对资源的读取.
二 . Resource接口
我们看到Resource接口中定义对资源的操作,其中我们可能最为关心的就是getFile()了.
我们看下接口的声明:
public interface Resource extends InputStreamSource.
我们看到了InputStreamSource接口,我们现在看下这个接口.
我们看到这个接口定义了获取输入流的方式.
三 .Reource接口的使用方式
spring将资源描述成为Reource,其中有两个核心的方法.
(1)getFIle()
(2)getInputStream()
通过上面的两个方法我们就能完成对资源文件的读取工作.
可是Resource仅仅是接口,我们现在需要的是Resource的实现类.
四 .Resource的实现类
我们可能最为常用的实现类就是下面的两个了.
(1)ClassPathResource : 该实现类描述了类路径下在资源.
(2)FileSystemResource : 该实现类描述了文件系统下的资源.
当我们使用存放在不同位置的资源的时候,我们就可以使用不同的实现类来获取Resource对象,然后就可以使用getFile()或者getInputStream()方法进行操作了.
五 . 问题的出现
Resource的子类实在是太多了,当我们在不同的环境下就需要使用不同的实现类,这对于我们来说是一个负担.
spring意识到这是一个问题,于是提供了一个统一的接口来描述资源的获取.
ResourceLoader接口:
我们看到这个接口之中有一个很好的方法,通过提供的资源路径来获取资源.
也就是说我们根本就用对Resource的实现了进行操作了.
我们只需要传入对应的资源路径描述符就可以了.
常见的路径描述符:
classpath: 描述类路径下的资源
file: 描述文件系统
http : 描述网络资源
六 . ResourceLoader的实现类
我们一般会使用一个默认的实现类帮助我们完成.
DefaultResourceLoader .
七 . 测试
@Test public void test1() throws Exception { //创建一个默认的资源加载器 ResourceLoader loader = new DefaultResourceLoader(); //从加载器之中获取Resource Resource resource = loader.getResource("classpath:aa.txt"); //将resource之中的文本打印出来 System.out.println(new String(FileCopyUtils.copyToByteArray(resource.getInputStream()))); }
在上面的测试用例之中,我们首先创建了一个默认的资源加载器,然后提供资源的路径获取资源对象.
最后我们就可以操作这个Resource了.
八 .总结
我们以后如果出现了读取资源的操作,
我们就可以使用spring提供的Resource这一套体系帮助我们来完成.
以上是关于001 Resource专题的主要内容,如果未能解决你的问题,请参考以下文章
[新增ST-001片段]全程字幕-20套UML+Enterprise Architect建模示范视频