【第四章】 资源 之 4.2 内置Resource实现 ——跟我学spring3
?
4.2? 内置Resource实现4.2.1? ByteArrayResource?????? ByteArrayResource代表byte[]数组资源,对于“getInputStream”操作将返回一个ByteArrayInputStream。
首先让我们看下使用ByteArrayResource如何处理byte数组资源:
?
?
2)使用指定的ClassLoader进行加载资源,将加载指定的ClassLoader类路径上相对于根路径的资源:
?
?
3)使用指定的类进行加载资源,将尝试加载相对于当前类的路径的资源:
?
?????? “resource1”将加载cn/javass/spring/chapter4/cn/javass/spring/chapter4/test1.properties资源;“resource2”将加载“cn/javass/spring/chapter4/test1.properties”;
?
4)加载jar包里的资源,首先在当前类路径下找不到,最后才到Jar包里找,而且在第一个Jar包里找到的将被返回:
?
?
如果当前类路径包含“overview.html”,在项目的“resources”目录下,将加载该资源,否则将加载Jar包里的“overview.html”,而且不能使用“resource.getFile()”,应该使用“resource.getURL()”,因为资源不存在于文件系统而是存在于jar包里,URL类似于“file:/C:/.../***.jar!/overview.html”。
类路径一般都是相对路径,即相对于类路径或相对于当前类的路径,因此如果使用“/test1.properties”带前缀“/”的路径,将自动删除“/”得到“test1.properties”。
?4.2.5? UrlResource?????? UrlResource代表URL资源,用于简化URL资源访问。“isOpen”永远返回false,表示可多次读取资源。
?????? UrlResource一般支持如下资源访问:
? ? ? ? ?http:通过标准的http协议访问web资源,如new UrlResource(“http://地址”);
? ? ? ? ?ftp:通过ftp协议访问资源,如new UrlResource(“ftp://地址”);
? ? ? ? ?file:通过file协议访问本地文件系统资源,如new UrlResource(“file:d:/test.txt”);
具体使用方法在此就不演示了,可以参考cn.javass.spring.chapter4.ResourceTest中urlResourceTest测试方法。
?4.2.6? ServletContextResource?????? ServletContextResource代表web应用资源,用于简化servlet容器的ServletContext接口的getResource操作和getResourceAsStream操作;在此就不具体演示了。
?4.2.7? VfsResourceVfsResource代表Jboss 虚拟文件系统资源。
?
Jboss VFS(Virtual File System)框架是一个文件系统资源访问的抽象层,它能一致的访问物理文件系统、jar资源、zip资源、war资源等,VFS能把这些资源一致的映射到一个目录上,访问它们就像访问物理文件资源一样,而其实这些资源不存在于物理文件系统。
在示例之前需要准备一些jar包,在此我们使用的是Jboss VFS3版本,可以下载最新的Jboss AS 6x,拷贝lib目录下的“jboss-logging.jar”和“jboss-vfs.jar”两个jar包拷贝到我们项目的lib目录中并添加到“Java Build Path”中的“Libaries”中。
让我们看下示例(cn.javass.spring.chapter4.ResourceTest):
?
?
?????? 通过VFS,对于jar里的资源和物理文件系统访问都具有一致性,此处只是简单示例,如果需要请到Jboss官网深入学习。
?
原创内容 转自请注明出处【http://sishuok.com/forum/blogPost/list/0/2456.html】
?
该语句执行后为什么资源的路径没有显示出来呢?