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://sishuok.com/forum/blogPost/list/0/2455.html】
相关推荐
1.11 【第四章】 资源 之 4.1 基础知识 ——跟我学spring3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153 1.12 【第四章】 资源 之 4.2 内置Resource实现 ——跟我学spring3 . . . . . ...
在"跟我学Spring3(4.1)资源之基础知识Java开发"的学习资料中,我们将会深入探讨Spring 3.1版本的基础知识,尤其是与资源管理相关的部分。这将帮助Java开发者更好地理解和应用这个强大的框架。 首先,Spring 3.1...
标题“跟我学spring”和描述“spring 的使用,每个知识点和项目中的运用,20章的介绍。”暗示这是一份详细介绍Spring框架使用方法的教程或手册,覆盖了Spring的各个方面,并以实例为导向,深入探讨了每个知识点在...
NachOS 4.1 是该系统的其中一个版本,提供了完整的源代码,这对于操作系统学习者来说是一份宝贵的资源。 NachOS 的源码分为多个模块,每个模块都对应着操作系统核心的功能组件。以下是 NachOS 4.1 中可能包含的...
《跟我学Spring3》这本书是针对Spring框架进行深入解析的一本教程,涵盖了Spring的核心特性,包括IoC(Inversion of Control,控制反转)、DI(Dependency Injection,依赖注入)、AOP(Aspect-Oriented Programming...
4.1交通运输——小学生ppt学习课件
3. **Spring Transaction** (spring-tx-4.1.6.RELEASE.jar): 事务管理是Spring的核心功能之一,它允许开发者声明性地管理事务,提供编程式和声明式的事务处理,支持多种事务API如JTA、JDBC、Hibernate等。...
Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,其4.1.x版本是它的一个稳定版本,提供了丰富的功能和改进。这个压缩包包含了Spring框架的核心组件和模块的源代码,是深入理解Spring工作原理、扩展其...
标题中的“初三上册初中化学第四章4.1 我们的水资源复习总结”是指初中化学课程中的一个单元,主要探讨了地球上水资源的分布、人类对水的需求以及如何珍惜和保护水资源。这个单元的内容旨在帮助学生了解水在自然界和...
Spring 4.1是Spring框架的一个重要版本,它在前一版本的基础上进行了一系列的改进和增强,以提供更高效、更灵活的Java企业级应用开发支持。深入理解Spring 4.1的源码有助于开发者更好地掌握Spring框架的核心原理,...
Spring框架是Java开发中最受欢迎的轻量级框架之一,它为构建可维护、松耦合的应用程序提供了全面的支持。Spring4.1版本是该框架的一个重要里程碑,它引入了诸多改进和新特性,旨在提高开发效率和应用性能。在这个...
《跟我学Spring3》是针对Spring框架的入门教程,主要涵盖了Spring的核心特性:IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入),以及AOP(Aspect-Oriented Programming,面向切面编程...
下面我们将深入探讨Spring 4.1版本的关键知识点。 1. **依赖注入 (Dependency Injection, DI)**: Spring的核心特性之一就是依赖注入,它允许开发者在运行时通过容器来管理对象及其依赖关系,而不是硬编码这些关系。...
八年级数学下册第四章平行四边形4.1多边形1导学案无答案新版浙教版
在本项目中,我们主要关注的是一个基于Spring MVC 4.1、Spring 4.1、MyBatis 3.2以及Spring Security 3.2的Maven环境的搭建过程。下面将详细介绍这些技术栈的核心概念、它们如何协同工作以及如何在实际开发环境中...
《Spring Framework 4.1.x源码解析》 Spring Framework是Java开发中的核心框架,它为构建企业级应用提供了全面的基础设施。版本4.1.x是Spring的重要里程碑,引入了许多新特性和改进,使得开发者能够更高效、更灵活...
Spring MVC、Spring、MyBatis 和 Spring Security 是四个在Java Web开发中广泛使用的框架,它们分别负责不同的职责,共同构建了一个强大的企业级应用框架体系。这个整合包包含了这些框架的4.1和3.2版本,是为了解决...
**AUTOSAR 4.1 概览** AUTOSAR(AUTomotive Open System ARchitecture)是一个由汽车制造商、供应商和技术提供商组成的全球联盟,旨在为汽车电子系统开发创建一个标准化的开放软件架构。AUTOSAR 4.1 版本是这个标准...
Struts2、Hibernate和Spring(SSH)是Java开发中非常流行的三大开源框架,它们的集成极大地提升了企业级应用的开发效率和灵活性。Struts2作为MVC(模型-视图-控制器)架构的一部分,主要负责处理HTTP请求和展示视图...