添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在日常程序开发中,处理外部资源是很繁琐的事情,我们可能需要处理URL资源、File资源资源、ClassPath相关资源、服务器相关资源(JBoss AS 5.x上的VFS资源)等等很多资源。因此处理这些资源需要使用不同的接口,这就增加了我们系统的复杂性;而且处理这些资源步骤都是类似的(打开资源、读取资源、关闭资源),因此如果能抽象出一个统一的接口来对这些底层资源进行统一访问,是不是很方便,而且使我们系统更加简洁,都是对不同的底层资源使用同一个接口进行访问。

spring 提供一个Resource接口来统一这些底层资源一致的访问,而且提供了一些便利的接口,从而能提供我们的生产力。
这里写图片描述
getInputStream:每次调用都将返回一个新鲜的资源对应的Java.io. InputStream字节流,调用者在使用完毕后必须关闭该资源。
这里写图片描述
Resource接口继承InputStreamSource接口,并提供一些便利方法:
getURL:如果当前Resource代表的底层资源能由java.util.URL代表,则返回该URL,否则抛出IOException。
getURI:如果当前Resource代表的底层资源能由java.util.URI代表,则返回该URI,否则抛出IOException。
getFile:如果当前Resource代表的底层资源能由java.io.File代表,则返回该File,否则抛出IOException。
contentLength:返回当前Resource代表的底层文件资源的长度,一般是值代表的文件资源的长度。
createRelative:用于创建相对于当前Resource代表的底层资源的资源,比如当前Resource代表文件资源“d:/test/”则createRelative(“test.txt”)将返回表文件资源“d:/test/test.txt”Resource资源。
getFilename:返回当前Resource代表的底层文件资源的文件路径,比如File资源“file://d:/test.txt”将返回“d:/test.txt”,而URL资源 http://www.javass.cn 将返回“”,因为只返回文件路径。
getDescription:返回当前Resource代表的底层资源的描述符,通常就是资源的全路径(实际文件名或实际URL地址)。

Resource接口提供了足够的抽象,足够满足我们日常使用。而且提供了很多内置Resource实现:ByteArrayResource、InputStreamResource 、FileSystemResource 、UrlResource 、ClassPathResource、ServletContextResource、VfsResource等
这里写图片描述
具体的实现就自己看代码了

目录`Resource`内置`Resource`实现`UrlResource``ClassPathResource``FileSystemResource``ServletContextResource``ResourceLoader``ResourcePatternResolver``ResourceLoaderAware` 资源 作为依赖应用程序上下文和 资源 路径构建应用程序上下文应用程序上下文构造函数 资源 路径中的通配符Ant 风格`classpath*:`前缀 本章介绍 Spring 如何 处理 资源 以及如何在 面试的时候,你肯定被问过, Spring 的初始化过程、或者Bean的生命周。我相信大部分人都是死记硬背的,真正能自己读懂代码而说出整个过程的人寥寥无几。 造成这种局面的原因,尝试阅读 Spring 源码的人肯定深有感触,代码量是一部分原因,还有就是里面的各种抽象的接口,如果没有人或者书的指点,你很难知道它是起什么作用。 不是我们的能力不行,而是方法不对。 就像我们工作中,对于别人写的代码让你直接去阅读,没有当事人的帮助,那绝对是很痛苦的一件事,不论你的技术有多牛。 如下图所示, Java 中有各种各样的 资源 资源 的位置包括本地文件系统、网络、类路径等, 资源 的形式可以包括文件、二进制流、字节流等,针对不同的 资源 又有不同的加载形式。本地文件系统中的文件在 Java 中使用 File 表示,使用 FileInputStream 读取。网络上的 资源 使用 URL 表示,使用 URLConnection 获取 InputStream 进行读取。而类路径下的 资源 使用 ClassLoader 进行读取。为了使用统一的方式访问 资源 Spring 资源 抽象为 Resource,将 资源 的加载抽象为 一、 Spring 资源 详解1.1引言在日常程序开发中, 处理 外部 资源 是很繁琐的事情,我们可能需要 处理 URL 资源 、File 资源 、ClassPath相关 资源 、服务器相关 资源 等等很多 资源 。因此 处理 这些 资源 需要使用不同的接口,这就增加了我们系统的复杂性;而且 处理 这些 资源 步骤都是类似的(打开 资源 、读取 资源 、关闭 资源 ),因此如果能抽象出一个统一的接口来对这些底层 资源 进行统一访问,是不是很方便,而且使我们系统更加简 文件 资源 操作 Spring 中定义了一个Org. Spring Framework.Core.Io.Resource接口,Resource接口是为了加载不同类型的 资源 文件。 1.通过FileSystemResource加载系统绝对文件路径进行访问。      2.通过ClassPathResource加载类文件的方式进行访问。 package com.baobaotao.io;