博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
资源 之 4.1 基础知识(玖)
阅读量:5992 次
发布时间:2019-06-20

本文共 2082 字,大约阅读时间需要 6 分钟。

4.1.1  概述

       在日常程序开发中,处理外部资源是很繁琐的事情,我们可能需要处理URL资源、File资源资源、ClassPath相关资源、服务器相关资源(JBoss AS 5.x上的VFS资源)等等很多资源。因此处理这些资源需要使用不同的接口,这就增加了我们系统的复杂性;而且处理这些资源步骤都是类似的(打开资源、读取资源、关闭资源),因此如果能抽象出一个统一的接口来对这些底层资源进行统一访问,是不是很方便,而且使我们系统更加简洁,都是对不同的底层资源使用同一个接口进行访问。

       Spring 提供一个Resource接口来统一这些底层资源一致的访问,而且提供了一些便利的接口,从而能提供我们的生产力。

4.1.2  Resource接口

       Spring的Resource接口代表底层外部资源,提供了对底层外部资源的一致性访问接口。

public interface InputStreamSource {      InputStream getInputStream() throws IOException;  }
public interface Resource extends InputStreamSource {         boolean exists();         boolean isReadable();         boolean isOpen();         URL getURL() throws IOException;         URI getURI() throws IOException;         File getFile() throws IOException;         long contentLength() throws IOException;         long lastModified() throws IOException;         Resource createRelative(String relativePath) throws IOException;         String getFilename();         String getDescription();  }

1)InputStreamSource接口解析:

         getInputStream每次调用都将返回一个新鲜的资源对应的java.io. InputStream字节流,调用者在使用完毕后必须关闭该资源。

2)Resource接口继承InputStreamSource接口,并提供一些便利方法:

         exists返回当前Resource代表的底层资源是否存在,true表示存在。

         isReadable返回当前Resource代表的底层资源是否可读,true表示可读。

         isOpen返回当前Resource代表的底层资源是否已经打开,如果返回true,则只能被读取一次然后关闭以避免资源泄露;常见的Resource实现一般返回false。

         getURL如果当前Resource代表的底层资源能由java.util.URL代表,则返回该URL,否则抛出IOException。

         getURI如果当前Resource代表的底层资源能由java.util.URI代表,则返回该URI,否则抛出IOException。

         getFile如果当前Resource代表的底层资源能由java.io.File代表,则返回该File,否则抛出IOException。

         contentLength返回当前Resource代表的底层文件资源的长度,一般是值代表的文件资源的长度。

         lastModified返回当前Resource代表的底层资源的最后修改时间。

         createRelative用于创建相对于当前Resource代表的底层资源的资源,比如当前Resource代表文件资源“d:/test/”则createRelative(“test.txt”)将返回表文件资源“d:/test/test.txt”Resource资源。

         getFilename返回当前Resource代表的底层文件资源的文件路径,比如File资源“file://d:/test.txt”将返回“d:/test.txt”,而URL资源http://www.javass.cn将返回“”,因为只返回文件路径。

         getDescription返回当前Resource代表的底层资源的描述符,通常就是资源的全路径(实际文件名或实际URL地址)。

 

Resource接口提供了足够的抽象,足够满足我们日常使用。而且提供了很多内置Resource实现:ByteArrayResource、InputStreamResource 、FileSystemResource 、UrlResource 、ClassPathResource、ServletContextResource、VfsResource等。

转载地址:http://octlx.baihongyu.com/

你可能感兴趣的文章
Mysql中查询速度的优化
查看>>
ES6中this的三种用法
查看>>
Quartz指南
查看>>
java Math类中的pow方法的问题Math.pow(64,1/3)是1而不是4
查看>>
要出去找工作了,看看多线程和并行的区别及什么时候该用
查看>>
php5.5.25升级到php5.6.30,加载yaf.so报错解决方法!
查看>>
JSP proxool+mysql数据库连接池配置
查看>>
Twitter Snowflake算法详解
查看>>
盘点springmvc的常用接口
查看>>
swift 简单语句 控制流语句
查看>>
Linux下添加PATH环境变量
查看>>
c语言基本函数
查看>>
Android-ConvenientBanner轻松实现广告头效果
查看>>
使用MyEclipse开发Java EE应用:用XDoclet创建EJB 2 Session Bean项目(四)
查看>>
ajax传递复杂参数
查看>>
javaweb学习总结(十)——HttpServletRequest对象(一)
查看>>
First Night
查看>>
重温JavaScript
查看>>
script的加载方式与执行
查看>>
C++基本语法( Visual Studio 2015 )【个人 见解】
查看>>