资源访问工具类
来源:互联网 发布:西宁数据工程师招聘 编辑:程序博客网 时间:2024/06/09 21:33
---------------siwuxie095
JDK所提供的访问资源的类,并不能很好的满足各种底层资源的访问需求,
如:缺少从类路径或Web 容器的上下文中获取资源的操作类
因此,Spring设计了一个Resource接口,它为应用提供了更强大的访问
底层资源的能力,该接口拥有对应不同资源类型的实现类
Resource 接口的主要方法:
(1)boolean exists():判断资源是否存在
(2)boolean isOpen():判断资源是否已经打开
(3)URL getURL():如果底层资源可以表示成URL,则返回对应的 URL 对象
(4)File getFile():如果底层资源对应一个文件,则返回对应的File对象
(5)InputStream getInputStream():返回资源对应的输入流
Spring框架使用Resource来装载各种资源,这些资源包括:配置文件
资源、国际化属性文件资源 …
Resource 接口的具体实现类:
(1)ByteArrayResource
ByteArrayResource,即二进制数组表示的资源,二进制数组资源
可以在内存中通过程序构造
(2)ClassPathResource
ClassPathResource,即类路径下的资源,资源以相对于类路径的方式表示
(3)FileSystemResource
FileSystemResource,即文件系统资源,资源以文件系统路径的方式表示
(4)InputStreamResource
InputStreamResource,即输入流资源,资源以输入流返回的方式表示
(5)ServletContextResource
ServletContextResource,即Web 容器上下文中的资源,负责以相对
于 Web应用根目录的路径来加载资源
支持以 流 和 URL 的方式来进行访问,在war包解包的情况下,也可以
通过File 的方式来进行访问,该类还可以直接从 jar 包中来访问资源
(6)UrlResource
UrlResource封装了java.net.URL,它使用户能够访问任何可以通过
URL表示的资源,如:文件系统资源、HTTP资源、FTP资源 …
有了以上几个抽象资源类后,就可以将 Spring 的配置信息放置在任何地方,
如:数据库 或 LDAP,只要最终可以通过 Resource 接口返回配置信息即可
为了访问不同类型的资源,必须使用相应的 Resource 实现类,这是比较麻烦的,
Spring 提供了一个强大的加载资源的机制,不但能够通过 classpath、file 等不同
地址前缀来识别不同的资源类型,而且还支持 Ant 风格的带通配符的资源地址
Spring 支持的不同类型的资源地址前缀:
(1)classpath
从类路径中加载资源,classpath:与classpath:/等价,都是相对于
类的根路径,而资源文件可以在标准的文件系统中,也可以在jar 或
zip 格式的类包中
如:classpath:com/siwuxie095/bean.xml
或:classpath:/com/siwuxie095/bean.xml
(2)file
使用UrlResource从文件系统目录中装载资源,可采用绝对
或相对路径,file: 与file:/ 等价
如:file:com/siwuxie095/bean.xml
或:file:/com/siwuxie095/bean.xml
(3)http
使用UrlResource从Web服务器中装载资源
如:http://www.siwuxie095.com/bean.xml
(4)ftp
使用UrlResource从FTP服务器中装载资源
如:ftp://www.siwuxie095.com/bean.xml
(5)无前缀
如:com/siwuxie095/bean.xml
根据ApplicationContext的具体实现类采用
对应类型的Resource
其中,有和classpath: 对应的,还有另外一种
比较难以理解的:classpath*:
假设有多个jar 包文件 或文件系统类路径都拥有
一个相同的包名,如:com.siwuxie095
二者的区别在于:
classpath:只会在第一个加载的com.siwuxie095 包下查找,
而classpath*:会扫描所有这些 jar 包以及类路径下出现的
com.siwuxie095 包
这对于分模块打包的应用非常有用,假设一个名为 siwuxie095
的应用共分成3 个模块
每一个模块都对应一个配置文件,分别是:module1.xml、
module2.xml 和 module3.xml
它们都放到了com.siwuxie095 目录下,每个模块单独打成 jar 包
当使用classpath*:com/siwuxie095/module*.xml,可以成功加载
到这三个模块的配置文件
而使用classpath:com/siwuxie095/module*.xml,只会加载第一个
模块的配置文件
Ant风格资源地址支持的匹配符:
(1)?:匹配文件名中的一个字符
(2)*:匹配文件名中的任意字符
(3)**:匹配多层路径
Ant风格的资源路径示例:
(1)classpath:com/t*st.xml
(2)file:D:/conf/*.xml
(3)classpath:com/**/test.xml
(4)classpath:org/springframework/**/*.xml
Spring定义了一套资源加载的接口,并提供了实现类,如下:
ResourceLoader接口仅有一个getResource(String location)方法,
可以根据一个资源地址加载文件资源,但资源地址仅支持带资源类型
前缀的表达式,而不支持Ant风格的资源路径表达式
ResourcePatternResolver扩展了 ResourceLoader 接口,它定义了
一个新的接口方法:getResources(String locationPattern),该方法
支持带资源类型前缀以及Ant风格的资源路径表达式
PathMatchingResourcePatternResolver是Spring提供的
ResourcePatternResolver接口的标准实现类
PathMatchingResourcePatternResolver用法如下:
【made by siwuxie095】
- 资源访问工具类
- spring的资源访问工具类
- Spring提供的资源访问工具
- samba工具实现wiondows访问Linux资源
- 获取资源工具类
- 资源文件工具类
- 一个android访问http资源的便捷工具类——HttpHelper
- 一个android访问http资源的便捷工具类——HttpHelper
- 一个android访问http资源的便捷工具类——HttpHelper
- 修改资源类,轻松访问资源
- spring资源访问Resource类
- 访问SDCARD工具类
- 数据访问工具类
- HTTP访问工具类
- 资源访问
- 资源访问
- 访问资源
- Android资源存取工具类
- C++ list类存储结构体
- acm_线性表操作
- javascript 垃圾回收机制 小结
- Masonry比例用法
- git小技巧--如何从其他分支merge个别文件或文件夹
- 资源访问工具类
- windows git 安装
- windows下用cmd命令netstat查看系统端口使用情况
- WmiPrvSE占用CPU过多的问题
- php后台图书管理系统-登录页面02
- 基础知识—函数-函数参数及返回值
- Java 小例子:读取控制台的用户输入
- applicationContext.xml约束
- Android--推送机制实现原理(三)-自己实现推送功能--建立长连接