Spring 资源访问
来源:互联网 发布:芒果tv2016旧版 mac 编辑:程序博客网 时间:2024/05/08 11:52
Spring为资源访问提供了一个Resource接口,该接口提供了比URL更强的资源访问能力。
Resource接口主要提供了一下几个方法。
- getInputStream();定位并打开资源,返回资源对应的输入流。每次调用都返回新的输入流,调用者必须负责关闭输入流。
- exists();返回Resource所指向的资源是否存在。
- isOpen();返回资源文件是否打开,如果资源文件不能多次读取,每次读取结束时应该显示关闭,以防止资源泄露。
- getDescription();返回资源的描述信息,用于资源处理出错时输出该信息,通常是全限定文件名或实际URL。
- getFile:返回资源对应的File对象。
- getURL:返回资源对应的URL对象。
Spring提供了大量的Resource实现类:
- URLResource:访问网络资源的实现类。
- ClassPathResource:访问类加载路径里资源的实现类。
- FileSystemResource:访问文件系统里资源的实现类。
- ServletContextResource:访问相对于ServlerContext路径里的资源的实现类。
- InputStreamResource:访问输入流资源的实现类。
- ByteArrayResource:访问字节数组资源的实现类。
Spring提供了如下两个标志性接口:
- ReourceLoader:该接口实现类的实例可以获得一个Resource实例。
- ResourceLoaderAware:该接口实现类的实例将获得一个ResourceLoader的引用。
在ResourceLoader接口里有如下方法:
- Resource getResource(String
location):该接口仅包含这个方法,该方法用于返回一个Resource实例。ApplicationContext的实现类都实现ResourceLoader接口,因此ApplicationContext可用于直接获取Resource实例。
//ClassPathXmlApplicationContext是从类资源文件下(src)下寻找文件// ApplicationContext ctx = new // ClassPathXmlApplicationContext("bean.xml"); //创建ApplicationContext实例 //使用FileSystemXmlApplicationContext会从项目下找文件 ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml"); Resource res = ctx.getResource("book.xml"); //获取该资源的简单信息 System.out.println(res.getFilename()); System.out.println(res.getDescription()); //创建Dom4j的解析器 SAXReader reader = new SAXReader(); Document doc = reader.read(res.getFile()); //获取根元素 Element el = doc.getRootElement(); List l = el.elements(); //遍历根元素的全部子元素 for (Iterator it = l.iterator();it.hasNext() ; ){ //每个节点都是<书>节点 Element book = (Element)it.next(); List ll = book.elements(); //遍历<书>节点的全部子节点 for (Iterator it2 = ll.iterator();it2.hasNext() ; ) { Element eee = (Element)it2.next(); System.out.println(eee.getText()); } }
//通过标准classpath:前缀,强制使用classPathResource Resource res = ctx.getResource("classpath:book.xml"); //通过标准file:前缀,强制使用UrlResource访问本地资源 Resource res = ctx.getResource("file:book.xml"); //通过标准http:前缀,强制使用UrlResource访问基于http协议的网络资源 Resource res = ctx.getResource("http://localhost:8080/bean.xml");
以下是常见的前缀及对应的访问策略:
- classpath:以classpathresource实例来访问类加载路径下的资源。
- file:以urlresource实例访问本地文件 系统的资源。
- http:以URLResource实例访问基于HTTP协议的网络资源。
- 无前缀:由ApplicationContext的实现类决定访问策略。
使用Resource作为属性:
如果Bean实例访问资源,有以下两种策略:
- 代码中获取Resource实例。
- 使用依赖注入。
<?xml version="1.0" encoding="GBK"?><!-- Spring配置文件的根元素,使用spring-beans-3.0.xsd语义约束 --><beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd"> <bean id="test" class="com.bh.service.TestBean"> <!-- 注入资源 --> <property name="resource" value="classpath:book.xml"/> </bean></beans>
在ApplicationContext中使用资源:
ApplicationContext确定资源访问策略通常有两个方法:
- ApplicationContext实现类指定访问策略。
- 前缀指定访问策略。
ApplicationContext实现类指定访问策略:
当我们创建ApplicationContext对象时,通常可以使用如下三个实现类。
- ClassPathXMLApplicationContext:对应使用ClassPathResource进行资源访问。
- FileSystenXmlApplicationContext:对应使用FileSystemResource进行资源访问。
- XmlWebApplicationContext:对应使用ServletContextResource进行资源访问。
0 0
- Spring中的资源访问
- Spring的资源访问
- Spring资源访问
- Spring之资源访问
- 九、Spring资源访问
- Spring资源访问机制
- Spring 资源访问利器
- Spring资源访问器
- Spring-----15、资源访问
- Spring 资源访问
- Spring静态资源访问
- Spring -- 资源访问(二)
- 5.2. Spring访问资源
- spring 静态资源访问
- spring资源访问
- Spring的资源访问
- spring中的资源访问
- 使用Spring访问资源文件
- MongoDB 数据库级锁、建索引导致数据库阻塞、不合理使用嵌入 embed document、不合理使用 Array 字段等4个坑
- .net mvc controler有哪些返回值
- UFLDL Tutorial学习笔记(一)Linear&Logistic&Softmax Regression
- Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
- java collection大概
- Spring 资源访问
- 【分享】WeX5的正确打开方式(6)——数据组件初探
- Android Studio下使用AIDL创建和使用远程service
- 行为型--迭代器模式
- IDirect3DDevice9::Present函数
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- 安装SQL2008 R2出现 chould not open key:unknown\components
- Linux GCC常用命令
- 基于historyAPI的PC图墙无刷新跳转功能