`

Spring资源抽象接口--Resource

 
阅读更多

一、资源抽象接口--Resource

Resource 接口,它为应用提供了更强的访问底层资源的能力。

先来了解一下Resource 接口的主要方法:

boolean exists():资源是否存在;

boolean isOpen():资源是否打开;

URL getURL() throws IOException:如果底层资源可以表示成URL,该方法返回对应的URL 对象;

File getFile() throws IOException:如果底层资源对应一个文件,该方法返回对应的File 对象;

InputStream getInputStream() throws IOException:返回资源对应的输入流。


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 为后缀的文件;

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());

}


参考《spring 3.x 企业应用开发实战》

分享到:
评论

相关推荐

    Spring-Reference_zh_CN(Spring中文参考手册)

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 5.4.2.1. 注册用户自定义的PropertyEditor ...

    spring chm文档

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

    Spring入门笔记.md

    对于bean的理解,希望大家是把他看成Object对象,他可以是任何对象,甚至是接口,甚至是抽象方法,当然,具体用法大家在以后的使用中会有所认识的; 写一个简单的bean类 ```java package mybatis.study.start.bean...

    Spring 2.0 开发参考手册

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

    Spring中文帮助文档

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

    Spring API

    5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP...

    高级开发spring面试题和答案.pdf

    面试高级开发的期间整理的面试题目,记录我面试遇到过的spring题目以及答案 目录 ...抽象类和接口的区别,什么时候用抽象类什么时候用接口; StringBuilder和StringBuffer的区别 java值传递和引用传递

    Spring的学习笔记

    第一课:面向抽象编程 4 第二课:Jdom的基本使用 4 第三课:模拟Spring功能 5 第四课:搭建sping的运行环境 8 一、 建立一个新的项目 8 二、 建立spring的配置文件 8 三、 引入spring的jar包 8 四、 测试代码: 8 五...

    ecommerce-microservices-spring-reactive-webflux:带有Spring响应式Webflux和Spring Cloud微服务的电子商务演示

    使用Spring Boot,Spring Cloud,Spring WebFlux,Postgresdb和Docker的基于微服务的完整电子商务演示实现。 抽象 在这个项目中,我没有构建独立的微服务,但是我实现了微服务共享相同的数据库,为什么? 因为我想...

    Spring 3.x 中文开发手册.pdf

    4、属性抽象层 结合2,3使用,可以在很多配置处,写出比如这样的表达式 以减少不同环境下,配置文件切换的需要 <import resource="${JAVA_HOME}/com/bank/service/${env}-config.xml"/> 5、xml的什么,不感兴趣 6、...

    开源框架 Spring Gossip

    简单邮件 HTML 邮件 内嵌图片或附档 排程 Spring则对 java.util.Timer提供了抽象封装,让您可以善用Spring的容器管理功能,而Spring对Quartz进行了封装,让它在使用上更加方便。 使用 ...

    Spring.net框架

    我不想过多的去谈抽象类和接口的区别,在后续的例子中我们将使用接口。由于接口在进行“动态代理” 时仍能保持类型信息,而抽象类可能由于代理的原因导致继承关系的“截断”(如MixIn等)。除此之外,对于单继承的C#...

    单点登录源码

    服务网关,对外暴露统一规范的接口和包装响应结果,包括各个子系统的交互接口、对外开放接口、开发加密接口、接口文档等服务,可在该模块支持验签、鉴权、路由、限流、监控、容错、日志等功能。示例图: ![API网关]...

    spring2.5.6源码

    第二句就是整个类中最重要的地方了,顾名思义,它的目的是通过XmlBeanDefinitionReader这个XML的Reader从资源resource中(也就是你的配置文件)读取bean的定义。接下来我们打开XmlBeanDefinitionReader的...

    spring2.5 学习笔记

    第一课:面向抽象编程 4 第二课:Jdom的基本使用 4 第三课:模拟Spring功能 5 第四课:搭建sping的运行环境 8 一、 建立一个新的项目 8 二、 建立spring的配置文件 8 三、 引入spring的jar包 8 四、 测试代码: 8 五...

    spring-common:[已弃用]与Spring Boot应用程序一起使用的通用Spring组件库和相关类

    用于将文件从Resource读取到字符串中 @Log 注释类,用于注入适当的Logger LoggerProvider 提供Logger界面 @LogField 注释类,指示要记录的字段 JdbcProperties 用于保存JDBC DataSource属性的抽象类 Jdbc...

    16 Resource的前生今世慕课专栏1

    背景自信和希望是青年的特权。——大仲马Spring 把其资源做了一个抽象,底层使用统一的资源访问接口来访问 Spring 的所有资源。也就是说,不管什么格式的文

    基于SpringBoot+Layui搭建的学生管理系统源码+项目说明(毕设).zip

    * 缓存:抽象缓存Ehcache * 简单的Restful风格开发 * pagehelper分页助手 * 加入了Druid数据监控 ### 数据库文件 数据库的文件放在了display目录下,可作为学习参考使用 ### 模块说明(大体框架是这样,不...

    基于SpringBoot+Layui+shiro安全框架和Ehcache缓存框架搭建的学生管理系统源码+项目说明.zip

    * 缓存:抽象缓存Ehcache * 简单的Restful风格开发 * pagehelper分页助手 * 加入了Druid数据监控 ### 数据库文件 数据库的文件放在了display目录下,可作为学习参考使用 ### 模块说明(大体框架是这样,不...

    cms后台管理

    <import resource="jeecms-servlet-front-action.xml"/>代码 找到jeecms-servlet-front-action.xml,在此配置文件中有 <bean id="dynamicAct" class="com.jeecms.cms.action.front.DynamicPageAct"/> 可以找到类...

Global site tag (gtag.js) - Google Analytics