Spring的配置文件是通过ClassPathResource来进行封装的,在Java中,不同的资源抽象成URL,通过注册不同的handle来处理不同的URL获取逻辑,一般的handle类型通过使用不同的前缀来来识别,比如file;http等,可以注册自己的URLStreamHandle来处理特定的前缀的文件,然而这需要检查当前的资源是否存在等。
对于不同的文件,Spring有不同的实现方式。

比如说,在系统中,我们可以使用
Resource re = new ClassPathResource("bean.xml");
InputStream in = re.getInputStream();得到InputStream的实例之后,就可以使用Resource及其子类提供的方法,进行相应的功能的开发了。

ClassPathResource : 类路径下的资源文件,使用classLoader或class加载资源,
支持文件系统下的资源以类路径,URL等方式加载资源,但是不支持jar包里面的资源。

ClassRelativeResourceLoader:将绝对路径下的资源解释为相对路径,给相应的类加载

UrlResource:URL定位的Resource资源的实现,支持URL路径或protocol协议下的文件

AbstractFileResolvingResource:用于加载UrlResource或ClassPathResource的路径
资源类的抽象基类。

DescriptiveResource:一个实现描述资源但不是一个真实资源的URL实现。

FileSystemResource:一个实现文件处理的资源实现,支持文件或URL,实现WriteResource接口

ByteArrayResource:一个实现字节数组的资源实现,为字节资源创建ByteArrayInputStream

AbstractResource:一个公共的抽象接口类供调用,这个exists方法用于检查是否一个文件或
输入资源是否存在,isOpen总是返回false,toString方法返回描述。

spring--源码分析相关推荐

  1. Spring源码分析【1】-Tomcat的初始化

    org.apache.catalina.startup.ContextConfig.configureStart() org.apache.catalina.startup.ContextConfig ...

  2. spring源码分析之spring-core总结篇

    1.spring-core概览 spring-core是spring框架的基石,它为spring框架提供了基础的支持. spring-core从源码上看,分为6个package,分别是asm,cgli ...

  3. 【Spring源码分析】Bean加载流程概览

    代码入口 之前写文章都会啰啰嗦嗦一大堆再开始,进入[Spring源码分析]这个板块就直接切入正题了. 很多朋友可能想看Spring源码,但是不知道应当如何入手去看,这个可以理解:Java开发者通常从事 ...

  4. 【spring源码分析】IOC容器初始化(二)

    前言:在[spring源码分析]IOC容器初始化(一)文末中已经提出loadBeanDefinitions(DefaultListableBeanFactory)的重要性,本文将以此为切入点继续分析. ...

  5. spring源码分析第六天------spring经典面试问题

    spring源码分析第六天------spring经典面试问题 1.Spring5 新特性及应用举例 2.Spring 经典的面试问题 a.什么是 Spring 框架?Spring 框架有哪些主要模块 ...

  6. spring源码分析第五天------springAOP核心原理及源码分析

    spring源码分析第五天------springAOP核心原理及源码分析 1. 面向切面编程.可以通过预 编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术 切面(A ...

  7. spring源码分析第四天------springmvc核心原理及源码分析

    spring源码分析第四天------springmvc核心原理及源码分析 1.基础知识普及 2. SpringMVC请求流程 3.SpringMVC代码流程 4.springMVC源码分析 4.1 ...

  8. spring源码分析第一天------源码分析知识储备

    spring源码分析第一天------源码分析知识储备 Spring源码分析怎么学? 1.环境准备: 2.思路    看:是什么? 能干啥    想:为什么?     实践:怎么做?         ...

  9. beaninfo详解源码解析 java_【Spring源码分析】Bean加载流程概览

    代码入口 之前写文章都会啰啰嗦嗦一大堆再开始,进入[Spring源码分析]这个板块就直接切入正题了. 很多朋友可能想看Spring源码,但是不知道应当如何入手去看,这个可以理解:Java开发者通常从事 ...

  10. Spring 源码分析(三) —— AOP(五)创建代理

    2019独角兽企业重金招聘Python工程师标准>>> 创建代理 代理的定义其实非常简单,就是改变原来目标对象方法调用的运行轨迹.这种改变,首先会对这些方法进行拦截,从而为这些方法提 ...

最新文章

  1. 怎么看java中ide_如何在eclipse IDE中查看Java的字节码?
  2. r 保留之前曲线_R简单数据处理和分析
  3. python tuple args_Python基本数据类型之tuple
  4. ngnix高并发的原理实现(转)
  5. ubuntu git cntlm 代理 不能下载
  6. java线程入门_java多线程快速入门(一)
  7. 李宏毅机器学习——深度学习的Tips
  8. 第10课:JSP指令 Page指令 (JSP教程 JSP入门实战教程 黄菊华Java网站开发系列教程)
  9. (转)价值杂志:推荐阅读投资理财经典55本(上篇)
  10. javascript常用正则表达式
  11. 文件夹删除不掉-需要管理员权限删除
  12. 宝宝性别测试软件,胎儿性别测试方法
  13. VB计算汉字笔画数代码
  14. ThreadPoolExecutor(六)——线程池关闭之后
  15. “百度杯”CTF比赛 十一月场 - 敲击
  16. Salesforce(0):使用VsCode使用Aura组件并展示组件扩展
  17. 【STM32训练—WiFi模块】第一篇、STM32驱动ESP8266WiFi模块获取网络时间
  18. 黄峥为拼多多拼了五年多
  19. 错误:数据提供程序或其他服务返回E_FAIL状态 到底怎么回事呢?
  20. Java WEB 二

热门文章

  1. 新入公司 问问题 ,快速了解代码的方法
  2. 【Android】java.lang.AssertionError use looper thread, must call Looper.prepare() first!异常分析
  3. Telnet不是内部或外部命令解决办法
  4. 老式Android中碎片Fragment之间的跳转和数据传递
  5. java将图片放进mysql中_在java代码中怎么从服务器上把图片拿来放到数据库里
  6. 对ViewPager的理解
  7. mysql 导入导出 csv_mysql 导出导入数据 -csv
  8. vue函数如何调用其他函数?_从源码中学Vue(一)生命周期中的钩子函数的那点事儿...
  9. 青春是如此美好,又怎忍平凡度过
  10. oracle 11g数据库以管理员身份登录不上