该接口拥有对不同资源类型的实现类
boolean exists() 资源是否存在
boolean isOpen() 资源是否打开
URL getURL() 如果底层资源可以表示成URL,则该方法返回对应的URL对象
File getFile() 如果底层资源对应一个文件,则该方法返回对应的File对象
InputStream getInputStream() 返回资源对应的输入流

WritableResource: 可写资源接口,有两个实现类FileSystemResource和PathResource
ByteArrayResource: 二进制数组标识的资源,二进制数组资源可以在内存中通过程序构造
ClassPathResource: 类路径下的资源,资源以相对于类路径的方式标识
FileSystemResource: 文件系统资源,资源以文件系统路径的方式表示,如D:/conf/bean.xml
InputStreamResource: 以输入流返回表示的资源
ServletContextResource: 以访问Web容器上下文中的资源而设计的类,负责以相对于Web应用根目录的路径加载资源。它支持以流和URL的方式访问,在WAR解包的情况下,也可以通过File方式访问。该累还可以直接从JAR包中访问资源
UrlResource: URL封装了java.net.URL,它使用户能够访问任何可以通过URL表示的资源,如文件系统的资源、HTTP资源、FTP资源等
PathResource: Spring4.0提供的读取资源文件的新类。Path封装了java.net.URL、java.nio.file.Path、文件系统资源,它使用户能够访问任何可以通过URL、Path、系统文件路径表示的资源
 
有了这个抽象的资源后,就可以将Spring的配置信息放置在任何地方,只要最终可以通过Resource接口返回配置信息即可
 
资源加载时默认采用系统编码读取资源内容,如果想更换编码格式,可以通过EncodeResource对资源进行编码,以保证资源内容操作的正确性
Resource res = new ClassPathResource("conf/file.txt");
EncodeResource encRes = new EncodedResource(res,"UTF-8");
 
资源地址表达式:

"classpath:"只会在第一个加载的包路径下查找,而"classpath*":会扫描所有这些JAR包及路径下出现的com.smart类路径
 
资源加载器:
Spring定义了一套资源加载的接口,并提供了实现类

ResourceLoader接口仅有一个getResource(String location)方法,可以根据一个资源地质加载文件资源。不过资源地址仅支持带资源类型前缀的表达式。PathMatchingResourcePatternResolver是Spring提供的标准实现类
 
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resourcePatternResolver.getResources("classpath*:com/wjc/ccf/**");
Assert.notNull(resources);
for (Resource resource : resources) {
    System.out.println(resource.getDescription());
}
 
*用Resource操作文件时,如果资源配置文件在项目发布时会被打包到JAR中,那么不能使用Resource.getFile()方法,应该使用getInputStream()方法

Spring资源访问接口Resource的更多相关文章

  1. spring资源访问接口和资源加载接口

    spring 资源访问接口 JDK提供的资源访问类,如java.net.URL.File等,不能很好地满足各种资源的访问需求,比如缺少从类路径或者Web容器的上下文中获取资源的操作类. 鉴于此,spr ...

  2. 攻城狮在路上(贰) Spring(三)--- Spring 资源访问利器Resource接口

    Spring为了更好的满足各种底层资源的访问需求.设计了一个Resource接口,提供了更强的访问底层资源的能力.Spring框架使用Resource装载各种资源,包括配置文件资源.国际化属性文件资源 ...

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

    从今天开始,一步步走上源码分析的路.刚开始肯定要从简单着手.我们先从Java发展史上最强大的框架——Spring...旗下的资源抽象接口Resource开始吧. 我看了好多分析Spring源码的,每每 ...

  4. Spring源码分析——资源访问利器Resource之实现类分析

    今天来分析Spring的资源接口Resource的各个实现类.关于它的接口和抽象类,参见上一篇博文——Spring源码分析——资源访问利器Resource之接口和抽象类分析 一.文件系统资源 File ...

  5. Spring资源访问

    资源访问 1.Resource Jdk提供的访问资源的类并不能很好地满足各种底层的资源访问需求, 比如缺少从类路径或者web容器的上下文中获取资源的操作类. 鉴于此, Spring设计了一个Resou ...

  6. 05.Spring 资源加载 - Resource

    基本概念 Spring 把所有能记录信息的载体,如各种类型的文件.二进制流等都称为资源. 对 Spring 开发者来说,最常用的资源就是 Spring 配置文件(通常是一份 XML 格式的文件). S ...

  7. spring 资源访问

    spring 资源访问 Resource resource=null; //访问网络资源 resource=new UrlResource("file:bool.xml"); // ...

  8. 09-spring学习-资源访问接口

    目标: 1,掌握Resource接口的使用. 2,掌握ResourceLoader接口的使用. 3,掌握各种资源数据的读取操作. 具体内容: 要想进行资源读取操作,首先想到IO包中提供的操作类. 但是 ...

  9. Spring读取资源的接口Resource笔记

    这个是Resource接口的继承体系图.这个接口就是一个资源描述符,抽象的描述了类路径下或者是文件系统中的文件.比如一个Resource接口的实现类的一个实例就代表一个的资源,比如用一个Resourc ...

随机推荐

  1. LeetCode145 Binary Tree Postorder Traversal Java题解(递归 迭代)

    题目: Given a binary tree, return the postorder traversal of its nodes' values. For example: Given bin ...

  2. initial ram disk

    1 什么是initial ram disk 它就是一个做好了的文件系统,其存储空间是ram.在kernel启动的第一个阶段,会被mount成根文件系统. 2 为什么需要initial ram disk ...

  3. CANopen——笔记

    1. c语言的typedef高级用法 typedef void (*post_sync_t)(CO_Data*); http://zhidao.baidu.com/link?url=_lDBGq_uk ...

  4. FileStream StreamWriter StreamReader BinaryReader

    FileStream vs/differences StreamWriter? http://stackoverflow.com/questions/4963667/filestream-vs-dif ...

  5. Linux Centos 下安装软件 三种方式

    1)一种是软件的源代码,您需要自己动手编译它.这种软件安装包通常是用gzip压缩过的tar包(后缀为.tar.gz). 2)另一种是软件的可执行程序,你只要安装它就可以了.这种软件安装包通常被是一个R ...

  6. Code First:Fluent API

    DbContext类有一个OnModelCreating方法,可以在这里配置模型,该方法接收一个类型为DbModelBuilder的建造者,本文介绍的为Data Anotation的等价方法,这些代码 ...

  7. SQLALchemy之创建表,删除表

    1.创建引擎 "数据库+第三方模块://用户名:密码@数据库服务端IP:端口号/数据库名?编码" engine = create_engine( "mysql+pymys ...

  8. python-----opencv读取视频、读取图片 显示指定大小并按键实现暂停、播放

    按空格键实现暂停播放,代码如下: cv2.namedWindow("m1", 0) cv2.resizeWindow("m1", 800, 600) cv2.i ...

  9. Hadoop 分布式环境slave节点重启忽然不好使了

    Hadoop 分布式环境slaves节点重启: 忽然无法启动DataNode和NodeManager处理: 在master节点: vim /etc/hosts: 修改slave 节点的IP (这个时候 ...

  10. debian下使用dpkg来安装/卸载deb包 (转载)

    转自:http://blog.csdn.net/zhou_2008/article/details/6076900 在debian下,你可以使用dpkg(Debian package system)来 ...