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

Spring为了更好的满足各种底层资源的访问需求。设计了一个Resource接口,提供了更强的访问底层资源的能力。
Spring框架使用Resource装载各种资源,包括配置文件资源、国际化属性文件资源等。
一、Resource接口的主要方法有
  boolean exists():资源是否存在。
  boolean isOpen():资源是否打开。
  URL getURL():如果底层资源可以表示为URL,该方法返回对应的URL对象。
  File getFile():如果底层资源对应一个文件,该方法返回对应的File对象。
  InputStream getInputStream() throws IOException:返回资源对应的输入流。
二、Resource继承体系
  1、Resource类图:图1


  2、实现类说明
    ByteArrayResource:二进制数组表示的资源,二进制数组资源可以在内存中通过程序构造。
    ClassPathResource:类路径下的资源,资源以相对于类路径的方式表示(一般是以相对于根路径的方式),
    FileSystemResouce:文件系统资源,资源以文件系统路径的方式表示。
    InputStreamResource:对应了一个InputStream的资源。
    ServletContextResource:为访问Web容器上下文中的资源二设计的类,负责以相对于Web应用根目录的路径来加载资源。
    UrlResource:封装了java.net.URL,它使用户能够访问任何可以通过URL表示的资源,如文件系统的资源,HTTP资源,FTP资源。
    EncodedResource:对资源进行编码,以保证资源内容操作的正确性。
    说明:Spring的Resource接口及其实现类可以在脱离了Spring框架的情况下使用。
  3、实例代码

Resorce res = new FileSystemResource("d:/test.txt");
//对应路径classpath\conf\file2.txt
Resource res2 = new ClassPathResource("conf/file2.txt");
//web应用环境中:
Resource res3 = new ServletContextResouce(application, "/WEB-INF/classes/conf/file2.txt");
//对资源进行编码:
EncodedResource encRes = new EncodedResource(res, "UTF-8");

三、资源加载
  按照上面的介绍,访问不同类型的资源时,需要使用相应的Resource实现类,比较麻烦。为了可以在不显示使用Resource实现类的情况下,仅通过资源地址的特殊标识就可以加载相应的资源,Spring提供了一个强大的加载资源的机制,可以通过"classpath:","file:"等资源地址前缀识别不同的资源类型,还支持ant风格的带通配符的资源地址。
  1、资源地址表达式

地址前缀 示例 对应资源类型
classpath: classpath:com/xxx/demo.xml 从类路径中加载资源,classpath:和classpath:/是等价的,都是相对于类的根路径。资源文件可以在标准文件系统中,也可以在jar或者zip文件中。
file: file:/conf/com/xxx/demo.xml 使用UrlResource从文件系统目录中装载资源,可以采用绝对或者相对路径。
http:// http://www.xxx.com/resource/demo.xml 使用UrlResource从Web服务器中装载资源
ftp:// ftp://www.xxx.com/resource/demo.xml 使用UrlResource从Ftp服务器中装载资源
没有前缀 com/xxx/demo.xml 根据ApplicationContext具体实现类采用对应的类型的Resource。

    A、Ant风格支持3种匹配符:
      ?:匹配文件名中的一个字符
      *:匹配文件名中的任意个字符。
      **:匹配多层路径。
    B、实例:
      classpath:com/t?et.xml
      file:D:/conf/*.xml
      classpath:com/**/test.xml
    C、注意classpath:和classpath*:的区别。
  2、资源加载器
    类图:


    实例代码:

ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resolver.getResources("classpath*:com/xxx/**/*.xml");

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

时间: 2024-10-25 07:50:57

攻城狮在路上(贰) Spring(三)--- Spring 资源访问利器Resource接口的相关文章

攻城狮在路上(贰) Spring(二)--- Spring IoC概念介绍

一.IoC的概念: IoC(控制反转)是Spring容器的核心.另一种解释是DI(依赖注入),即让调用类对某一个接口的依赖关系由第三方注入,以移除调用类对某一个接口实现类的一览. 定义如此,由此可见,在面向接口编程的情况下,IoC可以很好的实现解耦,可以以配置的方式为程序提供所需要的接口实现类. 在实际程序开发中,我们只需要提供对应的接口及实现类,然后通过Spring的配置文件或者注解完成对依赖类的装配.二.IoC的类型: 1.通过构造函数: 此种方式的缺点是,在构造函数中注入之后一般会作为一个

攻城狮在路上(贰) Spring(四)--- Spring BeanFactory简介

BeanFactory时Spring框架最核心的接口,它提供了高级IoC的配置机制,使管理不同类型的Java对象成为了可能.我们一般称BeanFactory为IoC容器.BeanFactory是Spring的基础设施,面向Spring本身. 一.BeanFactory的体系结构: 二.类图说明: ListableBeanFactory:定义了访问容器中Bean基本信息的方法,查看Bean的个数.获取某一类型Bean的配置名,看容器中是否包含某一Bean等方法. HierarchicalBeanF

攻城狮在路上(叁)Linux(三十)--- 光盘写入工具

一.基本步骤: 1.用mkisofs命令将所需备份的数据构建成镜像文件. 2.用cdrecord命令将镜像文件刻录至光盘或者DVD中. 二.mkisofs:新建镜像文件 mkisofs [-0 镜像文件] [-rv] [-m file] 待备份文件... [-V vol] graft -point isodir=Systemdir... 参数说明: -o:后面指定镜像文件 -r:通过RockRidge产生支持UNIX/Linux的文件数据,可以记录较多信息. -v:显示构建过程 -m file:

攻城狮在路上(叁)Linux(二十五)--- linux内存交换空间(swap)的构建

swap的功能是应付物理内存不足的状况,用硬盘来暂时放置内存中的信息. 对于一般主机,物理内存都差不多够用,所以也就不会用到swap,但是对于服务器而言,当遇到大量网络请求时或许就会用到. 当swap被使用的时候,主机的硬盘灯就会闪烁不停. 本篇介绍两种方式:1.设置一个swap分区   2.创建一个虚拟内存的文件. 一.使用物理分区构建swap: 1.首先是分区: A.fdisk /dev/sda; <== 根据后续提示创建一个分区. B.修改分区的ID,因为fdisk默认将分区的ID作为文件

攻城狮在路上(叁)Linux(二十六)--- linux文件系统的特殊查看与操作

一.boot sector 与 super block的关系: 1.boot sector用于存放引导装载程序,占用1024个字节. 2.super block的大小也为1024字节. 3.若block大小为1k,则boot sector和super block各占一个block. 4.若block大于1K(2K/4K)时,则两者都位于第一个block中. 二.磁盘空间的浪费问题:暂不考虑. 三.利用GUN的parted命令进行分区行为: 因为fdisk不支持高于2TB的分区. 命令格式: pa

攻城狮在路上(叁)Linux(十一)--- 用户与用户组、文件权限、目录配置

一.用户与用户组: 3个概念:文件所有者(user).用户组(group).其他人(others). /etc/passwd  <==存放所有的用户名 /etc/shadow  <==存放个人密码 /etc/group     <==存放所有的组名 二.文件权限的概念: 1.文件属性 <==使用ls -al命令 drwxr-x---       1       root  root   4096  sep8 18:27  install.log    ① ② ③ ④ ⑤ ⑥ ⑦ 参

攻城狮在路上(壹) Hibernate(十八)--- 管理Hibernate的缓存

一般Session的缓存被称为Hibernate的第一级缓存,SessionFactory的外置缓存是一个可配置的缓存插件,称为Hibernate的第二级缓存.一.缓存的基本原理: 1.持久化层的缓存的范围: A.事务范围:缓存只被当前事务访问. B.进程范围:缓存被进程内的所有事务共享.需要采取必要的隔离机制.缓存介质可以使内存或硬盘. C.集群范围:缓存被同一个机器或多个机器上的多个进程共享.缓存中的数据被复制到集群环境中的每一个进程节点,进程之间通过远程通信来保证缓存中的数据一致性,缓存中

攻城狮在路上(叁)Linux(二十七)--- 压缩与打包之常见的压缩命令

前面讲到,linux中的后缀名没有特殊的意义,一般是作为不同文件类型的标识而已.下面是与打包.压缩相关的后缀名介绍: *.z:compress程序压缩文件 *.gz:gzip程序压缩文件 *.bz2:bzip2压缩文件 *.tar:tar打包,未压缩 *.tar.gz:tar打包,经过gzip压缩 *.tar.bz2:tar打包,经过bzip2压缩 一般经过打包或者压缩处理的文件通过后缀名来进行区别. 一.compress:该命令比较古老,centos默认未安装,可以使用gzip代替. 二.gz

攻城狮在路上(叁)Linux(十三)--- 文件与目录的管理

一.查看文件与目录: 1.命令格式:ls [-aAdfFhilnrRSt] 目录名称; 2.参数说明: -a:显示所有的文件,包括隐藏文件(隐藏文件一般以.开头). -d:仅列出目录本身. -l:列出长数据串,包含文件的属性与权限等数据. 二.复制命令:cp 1.命令格式:cp [-adfilprsu] 源文件 目标文件 2.参数说明: -i:若目标文件已经存在时,覆盖之前先询问. -r:递归持续复制,用于目录的复制. -p:连同文件的属性一起复制过去,而非使用默认属性,一般在备份的时候用. -