Spring笔记——12.访问资源

Spring把文件,二进制流统称为资源。Spring改价了访问资源的策略,它提供了一个Resource接口,该接口提供了更强的资源访问能力,Spring架构本身大量使用了Resource来访问底层数据。

getInputStream方法能够定位并打开资源,返回资源对应的输入流。每次调用都返回新的输入流。调用者必须负责关闭输入流。

exists返回所指向文件是否存在。

isOpen返回资源是否打开。有些资源读取结束必须关闭,以防止资源泄露。

getDescription返回资源的描述信息。

getFile返回资源对应的File对象。

getURL返回资源对应的URL对象。最后两个是传统的方式,仅仅在简单方式访问受阻时才用。

此接口并没有任何资源访问实现逻辑。而对于不同资源,架构也提供了不同的resource实现类。并且Resource可以独立于Spring架构使用。虽然这里面也有接口与实现类的耦合,但这是指工具类的耦合,代码污染很小。

Resource实现类

  • UrlResource:访问网络资源的实现类
  • ClassPathResource:访问类加载路径里资源的实现类
  • FileSystemResource:访问文件系统里资源的实现类
  • ServletContextResource:访问相对于ServletContext路径下的资源的实现类
  • InputStreamResource:访问输入流资源的实现类
  • ByteArrayResource:访问字节数组资源的实现类

访问类加载路径下资源

ClassPathResource cr=new ClassPathResource("book.xml");

此处是手动创建。更多的时候架构能够在执行某个方法时,接受一个代表资源路径的字符串参数,参数有classpath前缀时,会自动创建ClassPathResource对象。

ResourceLoader接口和ResourceLoaderAware接口

时间: 2024-12-18 22:15:18

Spring笔记——12.访问资源的相关文章

【Spring学习笔记-MVC-14】Spring MVC对静态资源的访问

作者:ssslinppp       参考链接: http://www.cnblogs.com/luxh/archive/2013/03/14/2959207.html http://www.cnblogs.com/fangqi/archive/2012/10/28/2743108.html 优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往使用

Spring源码分析——资源访问利器Resource之接口和抽象类分析

从今天开始,一步步走上源码分析的路.刚开始肯定要从简单着手.我们先从Java发展史上最强大的框架--Spring...旗下的资源抽象接口Resource开始吧. 我看了好多分析Spring源码的,每每一开始就是Spring IOC.AOP.BeanFactory这样的Spring典型模块,实在看厌了,这些暂且留到以后.我的想法是,分析就分析别人没分析过的,或者以不同的角度来分析别人分析过的. 可能很多用了Spring多年的程序员对Resource都了解有限,毕竟访问资源一般是搭建web工程框架的

Spring boot 默认静态资源路径与手动配置访问路径的方法

这篇文章主要介绍了Spring boot 默认静态资源路径与手动配置访问路径的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在application.propertis中配置 ##端口号 server.port=8081 ##默认前缀 spring.mvc.view.prefix=/ ## 响应页面默认后缀 spring.mvc.view.suffix=.html # 默认值为 /** spring.mvc.static-path-pattern=/** # 这里设置要指向的路径,多个

【Spring】12、Spring Security 四种使用方式

spring security使用分类: 如何使用spring security,相信百度过的都知道,总共有四种用法,从简到深为:1.不用数据库,全部数据写在配置文件,这个也是官方文档里面的demo:2.使用数据库,根据spring security默认实现代码设计数据库,也就是说数据库已经固定了,这种方法不灵活,而且那个数据库设计得很简陋,实用性差:3.spring security和Acegi不同,它不能修改默认filter了,但支持插入filter,所以根据这个,我们可以插入自己的filt

操作系统概念学习笔记 12 进程同步(二)管程

操作系统概念学习笔记 12 进程同步(二) 管程 基本的.高级的同步构造,即管程(monitor)类型. 使用: 管程类型提供了一组由程序员定义的.在管程内互斥的操作.管程类型的表示包括一组变量的声明(这些变量的值定义了一个类型实例的状态)和对这些变量操作的子程序和函数的实现.管程的类型表示不能直接为各个进程所使用.因此,在管程内定义的子程序只能访问位于管程内那些局部声明的变量和形式参数.类似的,管程的局部变量能被局部子程序访问. 管程结构确保一次只有一个进程能在管程内活动.不需要显示的编写同步

Spring04-SpringEL&Spring JDBC数据访问

一. SpringEL入门 Spring动态语言(简称SpEL) 是一个支持运行时查询和操作对象图的强大的动态语言,语法类似于EL表达式,具有诸如显示方法和基本字符串模板函数等特性. 1. 准备工作 项目:spring-el 2. 需要导入jar包 spring-expression.jar maven项目pom文件添加: 1 <dependency> 2 <groupId>org.springframework</groupId> 3 <artifactId&g

Spring基于ThreadLocal的“资源-事务”线程绑定设计的缘起

题目起的有些拗口了,简单说,这篇文章想要解释Spring为什么会选择使用ThreadLocal将资源和事务绑定到线程上,这背后有着什么样的起因和设计动机,通过分析帮助大家更清晰地认识Spring的线程绑定机制.本文原文链接:http://blog.csdn.net/bluishglc/article/details/7784502 转载请注明出处! “原始”的数据访问写法 访问任何带有事务特性的资源系统,像数据库,都有着相同的特点:首先你需要获得一个访问资源的“管道”,对于数据库来说,这个所谓的

Spring Resource接口获取资源

本文转自http://elim.iteye.com/blog/2016305 感谢作者 Resource 所有的资源都被可以通过 InputStream 这个类来获取,所以也屏蔽了资源的提供者 ResourceLoader 接口负责资源的统一加载 通过Spring Resource接口获取资源 目录 1       Resource简介 2       通过ResourceLoader获取资源 3       在bean中获取Resource的方式 1       Resource简介 在Spr

maven建spring mvc 项目访问不到uri 解决:

用maven 测试一下spring+springmvc+hibernate时,springmvc按以前本地jar建的web项目测试来配置,可怎么也访问不了uri,新建了几个项目,一直找不到,或报错! 搞了大半天,终于解决了!主要是mvc的配置如下: 其他配置照旧! <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/sche