`
steven19880224
  • 浏览: 11869 次
  • 性别: 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
分享到:
评论

相关推荐

    SpringFramework-5.2.7中文解析-Servlet篇

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

    SpringFramework-5.2.7中文解析-Reactive篇

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

    SpringFramework-5.2.7中文解析-测试篇

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

    SpringFramework-5.2.7中文解析-核心篇

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

    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`文档我个人...

    java8集合源码分析-Awesome-Java:真棒-Java

    集合源码分析 Java 笔记 Java 语言相关的API,第三方库和计算机基础理论等知识的学习和整理 更多 : | | 目录 资源 详细目录 Java语言和JDK源码 Java语言的基础理论知识 并发编程 Java并发编程相关的内容,并发包源码...

    java8集合源码分析-Project:工程目录

    集合源码分析 To Be Top Javaer - Java工程师成神之路 主要版本 更新时间 备注 v1.0 2019-04-10 首次发布 一、基础篇 面向对象 什么是面向对象 平台无关性 值传递 封装、继承、多态 Java基础知识 基本数据类型 自动...

    java8集合源码分析-noah-bestPractices:Java业务最佳实践与踩坑

    集合源码分析 Noah-Java最佳实践与踩坑 查看详细文章,可以参考我的博客 代码篇 01 使用了并发工具类库,线程安全就高枕无忧了吗?: 02 代码加锁:不要让“锁”事成为烦心事: 03 线程池:业务代码最常用也最容易...

    java8集合源码分析-common-mistakes:常见错误

    集合源码分析 《Java业务开发常见错误100例》 学习笔记 说明 该项目是学习 极客时间 该专栏的学习笔记 进度 代码篇 使用了并发工具类库,线程安全就高枕无忧了吗?:concurrenttool 代码加锁:不要让“锁”事成为...

    单点登录源码

    SpringMVC | MVC框架 | [http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc](http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc) ...

    数据库系统原理课程设计,基于 SSM 框架的医院药品库存管理系统+源代码+文档说明

    - [ ] [1.1 需求分析](#需求分析) - [ ] [1.2 概念结构设计](#概念结构设计) - [ ] [1.3 逻辑结构设计](#逻辑结构设计) - [ ] [1.4 物理结构设计](#物理结构设计) - [X] [1.5 数据库实施](#数据库实施) -...

    java8源码-Java-Interview:java面试相关的一些问题

    spring、spring组件源码分析 database 数据库 动态的切换数据源,你会怎么切?读写分离? struts 数据结构 thread 多线程、并发 有关多线程的一些小例子,在《Java编程思想》中可以找到源代码 io io操作 socket 网络...

    word源码java-BearKid.github.io:我的主页

    word源码java 卢伟标 5年工作经验 / 暨南大学 / 本科 . 统招 / 27岁 自驱动、有责任心、良好的自学能力。 习惯通过Google、Stack Overflow、官方文档等解决问题。 有一定的沟通协调能力与经验。 TDD、DDD的探索实践...

    java版飞机大战源码-Rockira.github.io:Rockira.github.io

    java版飞机大战源码 目录(善用Ctrl+F) 注 : 没链接的是还没写 :hot_beverage: 各类知识点总结 下面的文章都有对应的原创精美PDF,在持续更新中,可以来找我催更~ Hibernate AJAX Redis ...... :hot_beverage:Java...

    java8stream源码-doc:一步一步建立起分布式系统:SOA->微服务->云原生的一套完整技术栈

    简化实现Spring,来加深对Spring源码的理解。如果直接看源码懵逼的话。可以先通过这个项目( 5核心原理与30个类手写实战》有兴趣深入研究的也可以参考这本书。 数据库 b+Tree的原理与Mysql的innoDB索引原理 mySql...

    N学Java资深研发工程师1期81G

    28-分布式系统核心基础组件设计分析.ts 29-Spring原理深度剖析与实践.ts 30-剖析IOC底层源码并手动实现.ts 31-彻底搞懂Spring AOP.ts 43-分布式项目实战(一).ts 44-分布式项目实战(二).ts 45-分布式项目实战(三...

    java8源码-Learning-materials:学习资料

    【1】JAVA300集大型视频教程2018版发布 提取密码:llg2 【2】Vue2.5开发去旅游网站App从零基础入门到实战项目 提取密码:bgoy 【3】opencv+tensorflow入门人工智能图像处理视频教程+源码下载 提取密码:7b9w 【4】...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ │ 13.RPC底层通讯原理之Netty线程模型源码分析.wmv │ │ │ ├─14.分库分表之后分布式下如何保证ID全局唯一性 │ │ 14.分库分表之后分布式下如何保证ID全局唯一性.mp4 │ │ │ └─15.大型公司面试必答之...

Global site tag (gtag.js) - Google Analytics