资源信息(文件、url响应的信息。。)对开发是很重要的东西。jdk也提供了访问资源的一些基类(File、URl等),但对于框架了来说有一些不是很能满足开发。spring则提供了一个Resource接口。我们来阅读源码。
Resource接口继承InputSteamResource其实现类为AbstractResource,真实实现类分别为:AbstractFileResolvingResource,BeanDefinitionResource,ByteArrayResource,DescriptiveResource,FileSystemResource,InMemoryResource,ByteArrayResource,VfsResource,UrlResource,ClassPathResource,ServletContextResource,UrlResource,InputStreamResource。还是画图吧。
资源类之间的关系就是这些了,来说Resource接口中的方法:
boolean exists();校验资源是否存在
boolean isReadable();校验资源是否刻可读
boolean isOpen();校验资源是否打开,源码解释,资源不可以多次打开,如果打开了请先关闭打开的流资源防止资源泄露。
URL getURL() throws IOException;如果资源可以用URl表示则返回URl对象,则扔异常
URI getURI() throws IOException;,同上
File getFile() throws IOException;不需要太多解释
long contentLength() throws IOException;不需要太多解释
long lastModified() throws IOException;不需要太多解释
Resource createRelative(String relativePath) throws IOException;通过路径创建新的资源信息
String getFilename();不需要太多解释
String getDescription();当使用资源的时候出错返回的信息
现在来说说实现类都是主要干嘛用的吧,让我们更真实的了解他们
ByteArrayResource:二进制数组表示的资源,二进制数字资源可以在内存中通过程序构造。
ClassPathResource:类路径下的资源,这个是使用的很频繁的类,我们的classpath下的资源文件就可以通过此类很容易获取
FileSystemResource:文件系统资源,也使用的比较频繁,直接写路径就是可以获取资源了
InputStreamResource:对于的就是InputStream资源咯
ServletContextResource:当你的应用是web时,此类就可以访问web容器上下文中的资源。同时负责加载web应用更目录路径的资源加载,支持已流或者URL的方式访问,在war解包的情况下也可以通过File的方式访问,此类还可以直接访问jar包的访问资源
UrlResource:封装了URL类,可以通过URL的方式访问资源,eg:文件系统资源,http资源,ftp资源
来看看使用比较少的实现类
DescriptiveResource:此类实现没有真正的指向一个资源,只是一个占位符
VfsResource:加载虚拟文件系统的资源,暂时不是很了解,只是从字面意思理解
相关推荐
Spring 源码分析 Spring 框架是 Java 语言中最流行的开源框架之一,它提供了一个强大且灵活的基础设施来构建企业级应用程序。在 Spring 框架中,IOC 容器扮演着核心角色,本文将深入分析 Spring 源码,了解 IOC ...
10. **Spring Acegi框架授权实现**:Spring Acegi(Spring Security)允许开发者定义访问规则,控制谁可以访问哪些资源。它通过定义AccessDecisionVoter,结合AccessDecisionManager来决定访问权限。 通过这些深入...
以上只是Spring源码分析的部分内容,实际源码中还包括Spring的其他模块,如Spring Batch(批处理)、Spring Security(安全)、Spring Integration(集成)等。理解并掌握Spring源码,有助于我们更好地利用Spring...
### Spring源码分析_Spring_IOC:深入理解Spring的IOC容器机制 #### 基本概念与核心作用 在探讨Spring框架的核心组件之一——IOC(Inversion of Control,控制反转)容器之前,首先需要理解它在Spring框架中的角色...
《Spring源码分析》 Spring框架作为Java领域中不可或缺的一部分,其强大之处在于它提供了丰富的功能,包括依赖注入(Dependency Injection,简称DI)、面向切面编程(Aspect-Oriented Programming,简称AOP)、事务...
通过对这些模块的源码分析,我们可以深入了解Spring如何实现其强大的功能,并能更好地运用到实际项目中,提升代码质量和可维护性。无论是新手还是经验丰富的开发者,理解Spring的源码都将是一次宝贵的进阶之旅。
《Spring源码分析》 Spring框架作为Java领域最流行的开源框架之一,它的设计思想和实现方式一直是许多开发者深入研究的对象。这份"Spring源码分析"资料深入探讨了Spring的核心机制,帮助我们理解其背后的原理,从而...
Spring源码深度解析第二版 Spring是一款广泛应用于Java企业级应用程序的开源框架,旨在简化Java应用程序的开发和部署。Spring框架的核心主要包括了IoC容器、AOP、MVC框架等模块。 第1章 Spring整体架构和环境搭建 ...
《Spring源码分析——BeanFactory》 在Java的IoC(Inversion of Control)和DI(Dependency Injection)领域,Spring框架扮演着至关重要的角色。BeanFactory是Spring的核心组件之一,它是容器的基石,负责管理应用...
这份"spring源码(注释+测试版)"提供了Spring框架的源代码,带有注释和测试用例,对于开发者深入理解Spring的工作原理非常有帮助。 1. **spring-core**:这是Spring框架的基础模块,包含了核心的工具类和资源处理...
《Spring AOP 源码分析》 在深入探讨Spring AOP之前,我们先要理解AOP(面向切面编程)的基本概念。AOP是一种编程范式,它将关注点分离,使得我们可以将横切关注点(如日志、事务管理、安全检查等)与业务逻辑解耦...
《Spring源码分析——ApplicationContext》 在Java世界中,Spring框架是不可或缺的一部分,它以其强大的IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)特性,极大地...
### Spring Security 源码分析知识点 #### 一、Spring Security 概述 Spring Security 是一个强大且可高度定制的身份验证和访问控制框架。它提供了许多功能,包括登录表单、记住密码、CSRF 保护等。为了更好地理解...
在Spring框架的开发和学习过程中,源码分析是提升技能的重要环节。然而,有时当我们尝试导入Spring的源码时,可能会遇到编译错误,这通常是因为缺少了必要的依赖jar包。这两个关键的jar包对于理解Spring的工作原理...
Spring底层源码分析 SpringIoc加载流程分析 SpringBean对象的创建过程
本文将围绕"Spring源码"这一主题,深入探讨Spring框架的核心概念、设计模式以及主要模块,旨在帮助你更好地掌握Spring技术。 首先,Spring框架的设计理念是依赖注入(Dependency Injection,DI),它是控制反转...
源码分析对于理解Spring的工作原理、优化应用性能以及进行二次开发至关重要。让我们深入探讨Spring框架的一些核心概念和机制。 1. **依赖注入(Dependency Injection,DI)**:Spring的核心特性之一,通过DI,...
通过源码分析Spring,可以帮助开发者深入理解Spring的运作机制,掌握其核心编程思想。 首先,BeanFactory是Spring中IOC容器的基础接口,它负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖关系。...
在"spring源码全部uml类图"中,我们可以深入探讨Spring框架的内部结构和设计模式。 首先,Spring框架的核心组件包括IoC(Inversion of Control,控制反转)容器和AOP(Aspect-Oriented Programming,面向切面编程)...