`
jinnianshilongnian
  • 浏览: 21503081 次
  • 性别: Icon_minigender_1
博客专栏
5c8dac6a-21dc-3466-8abb-057664ab39c7
跟我学spring3
浏览量:2418452
D659df3e-4ad7-3b12-8b9a-1e94abd75ac3
Spring杂谈
浏览量:3008661
43989fe4-8b6b-3109-aaec-379d27dd4090
跟开涛学SpringMVC...
浏览量:5639353
1df97887-a9e1-3328-b6da-091f51f886a1
Servlet3.1规范翻...
浏览量:259899
4f347843-a078-36c1-977f-797c7fc123fc
springmvc杂谈
浏览量:1597268
22722232-95c1-34f2-b8e1-d059493d3d98
hibernate杂谈
浏览量:250209
45b32b6f-7468-3077-be40-00a5853c9a48
跟我学Shiro
浏览量:5858832
Group-logo
跟我学Nginx+Lua开...
浏览量:701943
5041f67a-12b2-30ba-814d-b55f466529d5
亿级流量网站架构核心技术
浏览量:785142
社区版块
存档分类
最新评论

【第四章】 资源 之 4.1 基础知识 ——跟我学spring3

 
阅读更多

4.1.1  概述

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

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

4.1.2  Resource接口

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

 

java代码:
public interface InputStreamSource {
    InputStream getInputStream() throws IOException;
}

 

java代码:
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.1 MB
  • 大小: 1.1 MB
  • 大小: 1.5 MB
分享到:
评论
8 楼 渺渺兮予怀 2017-03-05  
是java.net.URL和java.net.URI
7 楼 buffering 2015-08-09  
xiefengfeng 写道
"isOpen:返回当前Resource代表的底层资源是否已经打开,如果返回true,则只能被读取一次然后关闭以避免内存泄漏"

不是避免内存泄露,而是避免资源泄露


资源泄露什么意思,可否解释一下场景。
6 楼 jinnianshilongnian 2014-07-28  
xiefengfeng 写道
"isOpen:返回当前Resource代表的底层资源是否已经打开,如果返回true,则只能被读取一次然后关闭以避免内存泄漏"

不是避免内存泄露,而是避免资源泄露

谢谢 已修正
5 楼 xiefengfeng 2014-07-27  
"isOpen:返回当前Resource代表的底层资源是否已经打开,如果返回true,则只能被读取一次然后关闭以避免内存泄漏"

不是避免内存泄露,而是避免资源泄露
4 楼 fjguodong 2013-06-29  
mark! 1
3 楼 东方胜 2013-05-31  
学习了。前辈
2 楼 lsjinpeng 2012-09-24  
mark 这个看看
1 楼 to_zoe_yang 2012-04-28  
Class InputStreamResource

Method Summary
boolean equals(Object obj)
          This implementation compares the underlying InputStream.
boolean exists()
          This implementation always returns true.
String getDescription()
          This implementation returns the passed-in description, if any.
InputStream getInputStream()
          This implementation throws IllegalStateException if attempting to read the underlying stream multiple times.
int hashCode()
          This implementation returns the hash code of the underlying InputStream.
boolean isOpen()
          This implementation always returns true.
 

相关推荐

    跟开涛学Spring

    1.11 【第四章】 资源 之 4.1 基础知识 ——跟我学spring3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153 1.12 【第四章】 资源 之 4.2 内置Resource实现 ——跟我学spring3 . . . . . ...

    跟我学Spring3(4.1)资源之基础知识Java开发J

    在"跟我学Spring3(4.1)资源之基础知识Java开发"的学习资料中,我们将会深入探讨Spring 3.1版本的基础知识,尤其是与资源管理相关的部分。这将帮助Java开发者更好地理解和应用这个强大的框架。 首先,Spring 3.1...

    跟我学spring

    标题“跟我学spring”和描述“spring 的使用,每个知识点和项目中的运用,20章的介绍。”暗示这是一份详细介绍Spring框架使用方法的教程或手册,覆盖了Spring的各个方面,并以实例为导向,深入探讨了每个知识点在...

    NachOS-4.1_110——源码

    NachOS 4.1 是该系统的其中一个版本,提供了完整的源代码,这对于操作系统学习者来说是一份宝贵的资源。 NachOS 的源码分为多个模块,每个模块都对应着操作系统核心的功能组件。以下是 NachOS 4.1 中可能包含的...

    跟我学spring3 .pdf

    《跟我学Spring3》这本书是针对Spring框架进行深入解析的一本教程,涵盖了Spring的核心特性,包括IoC(Inversion of Control,控制反转)、DI(Dependency Injection,依赖注入)、AOP(Aspect-Oriented Programming...

    4.1交通运输——小学生ppt学习课件

    4.1交通运输——小学生ppt学习课件

    spring 4.1 jar包

    3. **Spring Transaction** (spring-tx-4.1.6.RELEASE.jar): 事务管理是Spring的核心功能之一,它允许开发者声明性地管理事务,提供编程式和声明式的事务处理,支持多种事务API如JTA、JDBC、Hibernate等。...

    java spring4.1.x源码

    Spring框架是中国Java开发领域中最广泛使用的轻量级框架之一,其4.1.x版本是它的一个稳定版本,提供了丰富的功能和改进。这个压缩包包含了Spring框架的核心组件和模块的源代码,是深入理解Spring工作原理、扩展其...

    初三上册初中化学第四章4.1 我们的水资源复习总结.ppt

    标题中的“初三上册初中化学第四章4.1 我们的水资源复习总结”是指初中化学课程中的一个单元,主要探讨了地球上水资源的分布、人类对水的需求以及如何珍惜和保护水资源。这个单元的内容旨在帮助学生了解水在自然界和...

    spring4.1源码

    Spring 4.1是Spring框架的一个重要版本,它在前一版本的基础上进行了一系列的改进和增强,以提供更高效、更灵活的Java企业级应用开发支持。深入理解Spring 4.1的源码有助于开发者更好地掌握Spring框架的核心原理,...

    Spring4.1官方jar包完整版

    Spring框架是Java开发中最受欢迎的轻量级框架之一,它为构建可维护、松耦合的应用程序提供了全面的支持。Spring4.1版本是该框架的一个重要里程碑,它引入了诸多改进和新特性,旨在提高开发效率和应用性能。在这个...

    跟我学spring3(1-7)1

    《跟我学Spring3》是针对Spring框架的入门教程,主要涵盖了Spring的核心特性:IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入),以及AOP(Aspect-Oriented Programming,面向切面编程...

    spring4.1 doc + jar包

    下面我们将深入探讨Spring 4.1版本的关键知识点。 1. **依赖注入 (Dependency Injection, DI)**: Spring的核心特性之一就是依赖注入,它允许开发者在运行时通过容器来管理对象及其依赖关系,而不是硬编码这些关系。...

    八年级数学下册第四章平行四边形4.1多边形1导学案无答案新版浙教版

    八年级数学下册第四章平行四边形4.1多边形1导学案无答案新版浙教版

    springmvc4.1+spring4.1+mybatis3.2+spring-security3.2的maven环境搭建

    在本项目中,我们主要关注的是一个基于Spring MVC 4.1、Spring 4.1、MyBatis 3.2以及Spring Security 3.2的Maven环境的搭建过程。下面将详细介绍这些技术栈的核心概念、它们如何协同工作以及如何在实际开发环境中...

    spring-framework-4.1.x.zip源码

    《Spring Framework 4.1.x源码解析》 Spring Framework是Java开发中的核心框架,它为构建企业级应用提供了全面的基础设施。版本4.1.x是Spring的重要里程碑,引入了许多新特性和改进,使得开发者能够更高效、更灵活...

    springmvc4.1+spring4.1+mybatis3.2+spring-security3.2 jar包

    Spring MVC、Spring、MyBatis 和 Spring Security 是四个在Java Web开发中广泛使用的框架,它们分别负责不同的职责,共同构建了一个强大的企业级应用框架体系。这个整合包包含了这些框架的4.1和3.2版本,是为了解决...

    AUTOSAR4.1——Overview

    **AUTOSAR 4.1 概览** AUTOSAR(AUTomotive Open System ARchitecture)是一个由汽车制造商、供应商和技术提供商组成的全球联盟,旨在为汽车电子系统开发创建一个标准化的开放软件架构。AUTOSAR 4.1 版本是这个标准...

    struts22.3.4.1+hibernate4.1.6+spring3.1.2整合jar包

    Struts2、Hibernate和Spring(SSH)是Java开发中非常流行的三大开源框架,它们的集成极大地提升了企业级应用的开发效率和灵活性。Struts2作为MVC(模型-视图-控制器)架构的一部分,主要负责处理HTTP请求和展示视图...

Global site tag (gtag.js) - Google Analytics