【Spring源码系列】IOC-Resource统一资源定义与加载

Resource接口为spring提供所有资源的顶层接口定义

AbstractResource为提供默认实现

FileSystemResource:可操作文件,URL,Spring5开始由NIO2实现具体操作
ByteArrayResource:对字节数组提供的数据的封装。
UrlResource
ClassPathResource:class path 类型资源的实现。
InputStreamResource :将给定的 InputStream 作为一种资源的 Resource 的实现类。

在这里插入图片描述

自定义Resource

继承AbstractResource,根据当前的具体资源特性覆盖相应的方法即可

Spring 资源加载的统一抽象ResourceLoader

DefaultResourceLoader

  • 扩展点:ProtocolResolver-自定义ResourceLoader实现
    • DefaultResourceLoader#addProtocolResolver(ProtocolResolver)
  • (1)通过 ProtocolResolver 来加载资源,成功返回 Resource
  • (2)location 以 “/” 开头,则构造 ClassPathContextResource 类型资源并返回
  • (3)若 location 以 “classpath:” 开头,则构造 ClassPathResource 类型资源并返回
  • (4)尝试构造 URL ,通过它进行资源定位,若没有则抛出 MalformedURLException 异常,返回ClassPathContextResource;否则(ResourceUtils.isFileURL(url) ? new FileUrlResource(url) : new UrlResource(url));

FileSystemResourceLoader
ClassRelativeResourceLoader: 可以根据给定的class 所在包或者所在包的子包下加载资源。
ResourcePatternResolver

  • 支持根据指定的资源路径匹配模式每次返回多个 Resource 实例
  • ResourcePatternResolver 在 ResourceLoader 的基础上增加了 #getResources(String locationPattern) 方法,以支持根据路径匹配模式返回多个 Resource 实例。
  • 同时,也新增了一种新的协议前缀 “classpath*:”,该协议前缀由其子类负责实现。
  • 常用子类: PathMatchingResourcePatternResolver 默认支持Ant路径匹配

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值