Spring资源抽象接口--Resource
2015-09-10 13:09
323 查看
一、资源抽象接口--Resource
Resource 接口,它为应用提供了更强的访问底层资源的能力。
先来了解一下Resource 接口的主要方法:
boolean exists():资源是否存在;
boolean isOpen():资源是否打开;
URL getURL() throws IOException:如果底层资源可以表示成URL,该方法返回对应的URL 对象;
File getFile() throws IOException:如果底层资源对应一个文件,该方法返回对应的File 对象;
InputStream getInputStream() throws IOException:返回资源对应的输入流。
图
伦理片 http://www.dotdy.com/
ByteArrayResource:二进制数组表示的资源,二进制数组资源可以在内存中通过程序构造;
ClassPathResource:类路径下的资源,资源以相对于类路径的方式表示;
FileSystemResource:文件系统资源,资源以文件系统路径的方式表示,如D:/conf/bean.xml 等;
InputStreamResource:以输入流返回表示的资源;
ServletContextResource:相对于Web 应用根目录的路径加载资源,该类还可以直接从JAR 包中访问资源;
UrlResource:Url 封装了java.net.URL,它使用户能够访问如文件系统的资源、HTTP 资源、FTP 资源等。
使用相应的Resource接口的 实现类,就可以将Spring 的配置信息放置在任何地方,都能访问了。
二、Spring 支持哪些资源类型的地址前缀:
图
其中和“classpath:”对应的,还有另一种比较难理解的“classpath*:”前缀。假设有多个JAR 包或文件系统类路径都拥有一个相同的包名(如com.baobaotao)。“classpath:”只会在第一个加载的com.baobaotao 包下查找,而“classpath*:”会到扫描所有这些JAR 包及类路径下出现的com.baobaotao 类路径。
这对于分模块打包的应用非常有用,假设一个名为baobaotao 的应用共分成3 个模块,一个模块都对应一个配置文件,分别是module1.xml,module2.xml 及module3.xml,都放到com.baobaotao 目录下,每个模块单独打JAR 包。使用“classpath*:com/baobaotao/module*.xml”将可以成功加载到这三个模块的配置文件,而使用“classpath:com/baobaotao/module*.xml”时只会加载一个模块的配置文件。
三、Ant 风格资源地址支持3 种匹配符:
?:匹配文件名中的一个字符;
*:匹配文件名中任意个字符;
**:匹配多层路径。
下面是几个Ant 风格的资源路径的示例:
classpath:com/t?st.xml : 匹配com 类路径下com/test.xml , com/tast.xml 或者com/txst.xml;
file:D:/conf/*.xml:匹配文件系统D:/conf 目录下所有以xml 为后缀的文件;
b6bf
classpath:com/**/test.xml:匹配com 类路径下(当前目录及其子孙目录)的test.xml文件;
classpath:org/springframework/**/*.xml:匹配类路径org/springframework 下所有以xml 为后缀的文件;
classpath:org/**/servlet/bla.xml:匹配类路径org/springframework/servlet/bla.xml,也匹配org/springframework/testing/servlet/bla.xml,还匹配org/servlet/bla.xml。
四、PathMatchingResourcePatternResolver
是Spring 提供了标准实现类,用于简单加载资源文件。
Resource resources[] =resolver.getResources("classpath*:com/baobaotao/**/*.xml");
for(Resource resource:resources){
System.out.println(resource.getDescription());
}
Resource 接口,它为应用提供了更强的访问底层资源的能力。
先来了解一下Resource 接口的主要方法:
boolean exists():资源是否存在;
boolean isOpen():资源是否打开;
URL getURL() throws IOException:如果底层资源可以表示成URL,该方法返回对应的URL 对象;
File getFile() throws IOException:如果底层资源对应一个文件,该方法返回对应的File 对象;
InputStream getInputStream() throws IOException:返回资源对应的输入流。
图
伦理片 http://www.dotdy.com/
ByteArrayResource:二进制数组表示的资源,二进制数组资源可以在内存中通过程序构造;
ClassPathResource:类路径下的资源,资源以相对于类路径的方式表示;
FileSystemResource:文件系统资源,资源以文件系统路径的方式表示,如D:/conf/bean.xml 等;
InputStreamResource:以输入流返回表示的资源;
ServletContextResource:相对于Web 应用根目录的路径加载资源,该类还可以直接从JAR 包中访问资源;
UrlResource:Url 封装了java.net.URL,它使用户能够访问如文件系统的资源、HTTP 资源、FTP 资源等。
使用相应的Resource接口的 实现类,就可以将Spring 的配置信息放置在任何地方,都能访问了。
二、Spring 支持哪些资源类型的地址前缀:
图
其中和“classpath:”对应的,还有另一种比较难理解的“classpath*:”前缀。假设有多个JAR 包或文件系统类路径都拥有一个相同的包名(如com.baobaotao)。“classpath:”只会在第一个加载的com.baobaotao 包下查找,而“classpath*:”会到扫描所有这些JAR 包及类路径下出现的com.baobaotao 类路径。
这对于分模块打包的应用非常有用,假设一个名为baobaotao 的应用共分成3 个模块,一个模块都对应一个配置文件,分别是module1.xml,module2.xml 及module3.xml,都放到com.baobaotao 目录下,每个模块单独打JAR 包。使用“classpath*:com/baobaotao/module*.xml”将可以成功加载到这三个模块的配置文件,而使用“classpath:com/baobaotao/module*.xml”时只会加载一个模块的配置文件。
三、Ant 风格资源地址支持3 种匹配符:
?:匹配文件名中的一个字符;
*:匹配文件名中任意个字符;
**:匹配多层路径。
下面是几个Ant 风格的资源路径的示例:
classpath:com/t?st.xml : 匹配com 类路径下com/test.xml , com/tast.xml 或者com/txst.xml;
file:D:/conf/*.xml:匹配文件系统D:/conf 目录下所有以xml 为后缀的文件;
b6bf
classpath:com/**/test.xml:匹配com 类路径下(当前目录及其子孙目录)的test.xml文件;
classpath:org/springframework/**/*.xml:匹配类路径org/springframework 下所有以xml 为后缀的文件;
classpath:org/**/servlet/bla.xml:匹配类路径org/springframework/servlet/bla.xml,也匹配org/springframework/testing/servlet/bla.xml,还匹配org/servlet/bla.xml。
四、PathMatchingResourcePatternResolver
是Spring 提供了标准实现类,用于简单加载资源文件。
Resource resources[] =resolver.getResources("classpath*:com/baobaotao/**/*.xml");
for(Resource resource:resources){
System.out.println(resource.getDescription());
}
相关文章推荐
- JAVA正则表达式 Pattern和Matcher
- quartz2.2.1与spring3.2.8版本不兼容的问题
- java bean 转为JSON
- solr4.7学习
- 如何把Java Script写成类
- 冒泡排序算法原理及JAVA实现
- java3
- 什么导致了Context泄露:Handler&内部类
- eclipse中查看storm0.9.3示例代码storm-start-05.docx
- SysLog简介和java操作实例
- Java实现图的遍历(深搜与广搜)
- java简单的输入语句(字符串)
- JAVA基础应用——POI操作Excel
- PWC6345: There is an error in invoking javac
- Spring MVC 总结一(spring mvc 基本例子)
- java-list去除重复的对象
- Eclipse JAVA文件注释乱码
- java 排序算法--冒泡排序
- MyEclipse使用汇总——MyEclipse10设备SVN插入
- Java简单的输入语句练习(整型数据)