`
steven19880224
  • 浏览: 12106 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring源码分析------IO(1)

 
阅读更多

spring核心库之io

1.InputStreamSource

    顶层的接口,返回输入流                                  

package org.springframework.core.io;
import java.io.IOException;
import java.io.InputStream;

public interface InputStreamSource {
	InputStream getInputStream() throws IOException;
}

 

2.Resource

    继承了InputStreamSource接口,资源描述接口,用于抽象底层资源

package org.springframework.core.io;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URL;
public interface Resource extends InputStreamSource {
	boolean exists();
	boolean isReadable();
	boolean isOpen();
	URL getURL() throws IOException;
	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();
}

 

      Resource接口派生了一个个抽象类:  AbstractResource; 两个接口:ContextResource和WritableResource 。

      其中,AbstractResource是Resource接口最基本的实现, 返回一些默认值;ContextResource作为从上下文载入资源的扩展接口,例如从javax.servlet.ServletContext或者javax.portlet.PortletContext。

   

package org.springframework.core.io;

public interface ContextResource extends Resource {
     //返回相对于上下文的路径
     String getPathWithinContext();

}

 

package org.springframework.core.io;

import java.io.IOException;
import java.io.OutputStream;

public interface WritableResource extends Resource {

     boolean isWritable();

     OutputStream getOutputStream() throws IOException;
}

 

 

 3.AbstractResource子类

 

  1)AbstractFileResolvingResource是处理url资源的基类,这些url包括使用了jboss vfs协议的url。其派生类有:

    ClassPathResource:使用给定的classloader或者class加载资源。它的派生类是ClassPathContextResource显式的表达了一个和上下文相关的路径资源。另一个派生类  为ClassRelativeContextResource,两者差别之处就是前者使用了classloader作为构造函数参数实例化,而后者使用class作为构造函数参数。本质区别是相对路径和绝对  路径资源。

  • PortletContextResource:用于处理Portlet上下文的资源。
  • ServletContextResource:用于处理servlet上下文的资源。
  • UrlResource:处理URL定义的资源,以及支持使用“flie:”协议的资源。

   

  2)BeanDefinitionResource

  包装了BeanDefinition对象。

 

  3)ByteArrayResource

  从给定的字节数组加载文件

 

  4)DescriptiveResource

  作为标记使用,包装了一个资源,为其制定了描述

 

  5)FileSystemResource

  Resource针对java.io.File类型的包装实现,并且支持URL资源。子类:

  FileSystemContextResource通过实现ContextResource接口,显示的表示了一个上下文相对路径下的资源。

 

  6)InputStreamResource
  将InputStream包装成资源类
  7)VfsResource
  VFS基于Resource的实现,支持JBOSS 5.X, 6.X, 7.X上的相关的VFS API版本
   8)FileSystemResource
  包装了一File对象作为资源
 
  • 大小: 106.3 KB
分享到:
评论

相关推荐

    架构师之路分布式系列课程(SpringMybatisNettyRPC) - 副本 - 副本.zip

    │ 18 spring源码分析17-1.mp4 │ 19 spring源码分析17-2.mp4 │ 20 spring源码分析18.mp4 │ 21 spring源码分析19-1.mp4 │ 22 spring源码分析19-2.mp4 │ 23 spring源码分析20.mp4 │ 24 spring源码分析21....

    架构师之路分布式系列课程(SpringMybatisNettyRPC) - 副本.zip

    │ 18 spring源码分析17-1.mp4 │ 19 spring源码分析17-2.mp4 │ 20 spring源码分析18.mp4 │ 21 spring源码分析19-1.mp4 │ 22 spring源码分析19-2.mp4 │ 23 spring源码分析20.mp4 │ 24 spring源码分析21....

    架构师之路分布式系列课程(SpringMybatisNettyRPC).7z

    │ 18 spring源码分析17-1.mp4 │ 19 spring源码分析17-2.mp4 │ 20 spring源码分析18.mp4 │ 21 spring源码分析19-1.mp4 │ 22 spring源码分析19-2.mp4 │ 23 spring源码分析20.mp4 │ 24 spring源码分析21....

    架构师之路分布式系列课程(SpringMybatisNettyRPC).zip

    │ 18 spring源码分析17-1.mp4 │ 19 spring源码分析17-2.mp4 │ 20 spring源码分析18.mp4 │ 21 spring源码分析19-1.mp4 │ 22 spring源码分析19-2.mp4 │ 23 spring源码分析20.mp4 │ 24 spring源码分析21....

    架构师之路分布式系列课程(SpringMybatisNettyRPC).rar

    │ 18 spring源码分析17-1.mp4 │ 19 spring源码分析17-2.mp4 │ 20 spring源码分析18.mp4 │ 21 spring源码分析19-1.mp4 │ 22 spring源码分析19-2.mp4 │ 23 spring源码分析20.mp4 │ 24 spring源码分析21....

    spring源码阅读——1.spring-core-3.2.9

    1. **依赖注入**:Spring Core中的关键特性是依赖注入,它允许组件之间的关系在运行时通过配置来决定,而不是硬编码在代码中。通过XML配置文件或注解,我们可以声明bean之间的依赖关系,使代码更加灵活且易于测试。 ...

    微服务生态组件之Spring Cloud LoadBalancer详解和源码分析.doc

    微服务生态组件之Spring Cloud LoadBalancer详解和源码分析 Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器,抽象和实现,用来替代Ribbon。下面我们将从常见使用示例开始,一步步分析源码...

    SpringFramework-5.2.7中文解析-Servlet篇

    本书编写主要目的在于翻译官方`spring.io`关于`SpringFramework`模块文档之核心篇,但是本书不仅仅是简单的翻译,我会根据相应的模块给出一些代码的操作实践以及给出相应的源码分析,`SpringFramework`文档我个人...

    微服务生态组件之Spring Cloud OpenFeign详解和源码分析.doc

    Spring Cloud OpenFeign 组件详解和源码分析 Spring Cloud OpenFeign 是一个声明式的 REST 客户端,基于 Feign 实现,支持 Spring MVC 注解,并与 Spring Cloud 完成整合。本文将详细介绍 Spring Cloud OpenFeign ...

    SpringFramework-5.2.7中文解析-Reactive篇

    本书编写主要目的在于翻译官方`spring.io`关于`SpringFramework`模块文档之核心篇,但是本书不仅仅是简单的翻译,我会根据相应的模块给出一些代码的操作实践以及给出相应的源码分析,`SpringFramework`文档我个人...

    netty源码+Spring源码视频教程.txt

    ### Spring源码分析 #### 1. Spring简介 Spring是一个开源的应用程序框架,提供了企业级应用开发的一整套解决方案,主要包括IOC(控制反转)、AOP(面向切面编程)等特性。Spring的核心优势在于其轻量级、非侵入式...

    SpringFramework-5.2.7中文解析-测试篇

    本书编写主要目的在于翻译官方`spring.io`关于`SpringFramework`模块文档之核心篇,但是本书不仅仅是简单的翻译,我会根据相应的模块给出一些代码的操作实践以及给出相应的源码分析,`SpringFramework`文档我个人...

    SpringFramework-5.2.7中文解析-核心篇

    本书编写主要目的在于翻译官方`spring.io`关于`SpringFramework`模块文档之核心篇,但是本书不仅仅是简单的翻译,我会根据相应的模块给出一些代码的操作实践以及给出相应的源码分析,`SpringFramework`文档我个人...

    aspa-sg_github_io-源码.rar

    【标题】:“aspa-sg_github_io-源码.rar”通常是指一个包含有特定项目或网站源代码的压缩文件,这里的"aspa-sg_github_io"很可能是一个GitHub用户名或者项目名。这个RAR文件是用于存储和传输代码的一种常见方式。 ...

    sample-spring-boot-netty:基于Spring Boot和Netty的高性能技术堆栈

    1. **非阻塞IO**:Netty基于NIO(非阻塞I/O)模型,能够处理大量并发连接,提高了系统的吞吐量。 2. **EventLoopGroup**:Netty的事件循环组,负责处理I/O事件和执行任务,实现线程复用。 3. **ChannelHandler**:...

    java8集合源码分析-java-demos:java-演示

    集合源码分析 java-demos other collect github project leetcode springCloud [Spring Cloud 从入门到实战] () [全网最详细的一篇SpringCloud总结] () [feign] () [Spring Security 真正的前后分离实现] () [Spring...

    SpringFramework-5.2.7中文解析-数据存储篇

    本书编写主要目的在于翻译官方`spring.io`关于`SpringFramework`模块文档之核心篇,但是本书不仅仅是简单的翻译,我会根据相应的模块给出一些代码的操作实践以及给出相应的源码分析,`SpringFramework`文档我个人...

    ldldmr_github_io-源码.rar

    很抱歉,但根据您提供的信息,"ldldmr_github_io-源码.rar" 和 "ldldmr_github_io-源码.zip" 都是压缩文件的名称,并没有提供具体的IT知识点。通常,这样的文件名可能指向一个GitHub项目的源代码,但是没有详细描述...

    gdaegeun539_github_io-源码.rar

    从源码分析,我们可以探讨以下几个IT知识领域: 1. 版本控制:GitHub是基于Git的版本控制系统,用于跟踪代码的更改历史,便于多人协作和代码管理。 2. Web开发:源码可能涉及到HTML、CSS和JavaScript,这是构建Web...

    instantgram_github_io-源码.rar

    源码分析可以帮助我们了解其工作原理、编程语言、架构设计以及可能的技术栈。 【描述】描述中的 "instantgram_github_io-源码.rar" 与标题一致,表明这个压缩包包含了整个项目的所有源代码文件。.rar 文件是一种...

Global site tag (gtag.js) - Google Analytics