1.介绍

不幸的是Java的标准的java.net.URL类和针对不同的URL前缀的标准处理器都不够充分去访问所有的低级资源。例如,美誉标准化的URL实现可能用于去范围需要从classpath中或者相对于一个SerletContext获取的资源。尽管可以可以针对特殊的URL前缀注册新的处理器,但是一般来讲这回很复杂而且URL接口仍然缺乏一些想要的功能更,比如一个去检查指向支援的存在的方法。

2.资源(Resource)接口

Spring的资源接口意味着更强的通过抽象的方式来访问立即的资源:

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

Resource接口中一些最重要的方法是:

  • getInputStream():锁定和打开资源,返回一个InputStream获取资源。这个期望每次的调用都返回一个刷新的InputStream。但是调用者有职责去关闭着个流。
  • exists():返回一个Boolean,标识这些资源是否存在
  • isOpen():返回布尔值,标识是否这个资源是否是一个打开的流。如果是true,InputStream不能多次的读取它,而且必须是只能读一次而且然后关闭它避免资源泄露。对于所有的一般的资源实现InputStreamResource来说将是false。
  • getDescription():返回这个资源的描述,在处理资源的时候用于错误输出。通常是完全的文件名或者一个实际的URL。

其他的方法允许你获取的表示资源的实际的URL或者文件对象。(如果向下的实现是兼容的而且支持这个功能)

Resource的抽象在Spring 自身中是使用的很多,当一个资源被需要到时候,在很多的方法签名中它会作为一个参数类型传入。在一些Spring APIs的其他方法中,会使用一个未加修饰的简单的形式的String用于创建Resource,或者是通过在String路径中特殊前缀,运行调用者去指明一个明确已经被创建和使用的的资源实现。

尽管Resource接口被Spring 和通过Spring被大量的使用,但是在你的代码中通过它自己把它当做一个通用的工具类来使用是很有用的,为了访问资源,甚至是当你的代码不知道或者不关心Spring的其他部分。尽管这个将你的代码和Spring耦合在一块,但是它只是耦合到了很小的一部分工具类中,而且它可以作为URL的有效替代,而且还可以和其他你想使用的库当成是等价的。

Spring Resources之介绍和资源接口的更多相关文章

  1. spring boot 使用spring.resources.static-locations 分离系统模版&&资源文件

    方便我们将资源配置以及模版&&静态文件分离出来,而不是打包在一起,比如以下的一个demo 参考配置: server.port=8006 spring.application.name= ...

  2. spring bean的介绍以及xml和注解的配置方法

    5.Bean 下边我们来了解一下Bean的: Bean的作用域Bean的生命周期Bean的自动装配Resources和ResourceLoader 5.1Bean容器的初始化 Bean容器的初始化 两 ...

  3. Spring Boot实战:静态资源处理

    前两章我们分享了Spring boot对Restful 的支持,不过Restful的接口通常仅仅返回数据.而做web开发的时候,我们往往会有很多静态资源,如html.图片.css等.那如何向前端返回静 ...

  4. spring.resources

    @EnableWebMvcNormally you would add @EnableWebMvc for a Spring MVC app, but Spring Boot adds it auto ...

  5. Spring MVC 使用介绍(十四)文件上传下载

    一.概述 文件上传时,http请求头Content-Type须为multipart/form-data,有两种实现方式: 1.基于FormData对象,该方式简单灵活 2.基于<form> ...

  6. Spring Boot的数据访问:CrudRepository接口的使用

    示例 使用CrudRepository接口访问数据 创建一个新的Maven项目,命名为crudrepositorytest.按照Maven项目的规范,在src/main/下新建一个名为resource ...

  7. 【spring boot】7.静态资源和拦截器处理 以及继承WebMvcConfigurerAdapter类进行更多自定义配置

    开头是鸡蛋,后面全靠编!!! ========================================================  1.默认静态资源映射路径以及优先顺序 Spring B ...

  8. Java之Spring Cloud概念介绍(非原创)

    文章大纲 一.理解微服务二.Spring Cloud知识介绍三.Spring Cloud全家桶四.参考资料下载五.参考文章 一.理解微服务   我们通过软件架构演进过程来理解什么是微服务,软件架构的发 ...

  9. 在Spring Boot中输出REST资源

    前面我们我们已经看了Spring Boot中的很多知识点了,也见识到Spring Boot带给我们的各种便利了,今天我们来看看针对在Spring Boot中输出REST资源这一需求,Spring Bo ...

随机推荐

  1. Codeforces Round #256 (Div. 2) D. Multiplication Table

    主题链接:http://codeforces.com/contest/448/problem/D 思路:用二分法 code: #include<cstdio> #include<cm ...

  2. 基于hadoop的电影推荐结果可视化

    数据可视化 1.数据的分析与统计 使用sql语句进行查询,获取所有数据的概述,包括电影数.电影类别数.人数.职业种类.点评数等. 2.构建数据可视化框架 这里使用了前端框架Bootstrap进行前端的 ...

  3. DTD验证XML(转)

    1.内部DTD       最简单的使用DTD的方法是在XML文件的序言部分加入一个DTD描述,加入的位置是紧接在XML处理指示之后.一个包含DTD的XML文件的结构为:    <?xml ve ...

  4. SqlServer发送邮件,定时作业

    今天偶然研究了一下sqlserver发送邮件的功能,之前听说过可以发,但是一直没尝试过,只是用C#写后台程序的方式来发邮件. 现在又多了一种发送邮件的途径. 大致的步骤如下: 1.配置sqlserve ...

  5. 下载文档--Struts2中国的文件下载被显示为空间的问题

    下载文档--Struts2中国人似乎是空文件下载格问题 前言:近期公司项目中用到文件下载,依据底层,决定使用struts2的文件下载模式. 乱码大多数都攻克了,竟然出现中文文件下载时,中文文字显示为空 ...

  6. 安装Team Foundation Server 2012过程截图

    原文:安装Team Foundation Server 2012过程截图 专题图 1,下载Team Foundation Server 2012  官方下载: http://www.microsoft ...

  7. char* 和char[]差异

    从因特网以下内容.笔者和总结汇总. 1. 问题介绍 问题引入: 在实习过程中发现了一个曾经一直默认的错误.相同char *c = "abc"和char c[]="abc& ...

  8. JavaScript学习之获取URL参数

    最近看了几道面试题,其中有一道就是关于写一个方法来获取浏览器地址栏URL查询部分的字段内容.虽然之前看过相关的东西,但感觉有点模糊,所以就又全面的学习一遍,谨以此文记之! 准备知识 在JavaScri ...

  9. 基于Android的ELF PLT/GOT符号和重定向过程ELF Hook实现(by 低端农业代码 2014.10.27)

    介绍 技术原因写这篇文章,有两种: 一个是在大多数在线叙述性说明发现PLT/GOT第二十符号重定向过程定向x86的,例<Redirecting functions in shared ELF l ...

  10. View中选择的数据行中的部分数据传入到Controller中

    将View中选择的数据行中的部分数据传入到Controller中   ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NE ...