Spring 资源访问
2016-07-05 16:46
357 查看
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实例。
以下是常见的前缀及对应的访问策略:
classpath:以classpathresource实例来访问类加载路径下的资源。
file:以urlresource实例访问本地文件 系统的资源。
http:以URLResource实例访问基于HTTP协议的网络资源。
无前缀:由ApplicationContext的实现类决定访问策略。
使用Resource作为属性:
如果Bean实例访问资源,有以下两种策略:
代码中获取Resource实例。
使用依赖注入。
在ApplicationContext中使用资源:
ApplicationContext确定资源访问策略通常有两个方法:
ApplicationContext实现类指定访问策略。
前缀指定访问策略。
ApplicationContext实现类指定访问策略:
当我们创建ApplicationContext对象时,通常可以使用如下三个实现类。
ClassPathXMLApplicationContext:对应使用ClassPathResource进行资源访问。
FileSystenXmlApplicationContext:对应使用FileSystemResource进行资源访问。
XmlWebApplicationContext:对应使用ServletContextResource进行资源访问。
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进行资源访问。
相关文章推荐
- java-用HttpURLConnection发送Http请求.
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring AOP动态代理-切面
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- VBScript 剪贴板抓取URL并在浏览器中打开
- 用vbs 实现从剪贴板中抓取一个 URL 然后在浏览器中打开该 Web 站点
- asp获取URL参数的几种方法分析总结[原创]_应用技巧_脚本之家
- C#实现在网页中根据url截图并输出到网页的方法
- zend framework框架中url大小写问题解决方法
- url decode problem 解决方法
- php url地址栏传中文乱码解决方法集合
- 探讨:parse url解析URL,返回其组成部分
- C#实现自动识别URL网址的方法
- C#自定义针对URL地址的处理类实例