spring基础-IO

spring对JDK中的资源访问

JDK的资源访问

在JDK中对资源的访问方式

URL:抽象对网络访问的资源目录。但是缺少例如isExist() isOpen()等方法
IO:提供了对于文件 二进制流等的抽象。
  但是缺少了类相对路径 servlet相对路径的的资源访问。

URL获得资源方式
//获得InputStream方法
URL url = new URL("");
URLConnection connection = url.openConnection();
connection.getInputStream();

//查看文件类型方法
URL url = new URL("");
//获得URL协议
String protocol = url.getProtocol();
//如果为文件协议
if("file".equal(protocol)){
}else if(protocol.startWith("vfs:")){//如果为vfs协议
}
ClassPath获得资源
ClassLoader loader = this.getClass().getClassLoader();
InputStream in = loader.getResourceAsStream();
Servlet获得相对资源

InputStream in = servletContext.getResourceAsStream();

JDK提供了很多中资源访问的接口,但是获得资源的方法并不统一,也缺少一些很使用的资源访问方式

spring 解决之道

spring对所有的资源抽象为Resource接口,这个接口定义了一系列的方法,统一了对资源的访问

Resource接口
通过内置提供大量的实现提供访问资源的子类,提供了很多常用的资源访问方式
这里写图片描述

ResourceLoader

spring实现如此众多的资源访问类,那我们客户端如何进行调用呢。
一.客户端必须知道这些子类知识,手动去创建这些资源子类
二.服务器端提供一个统一解析的接口,通过一定的命名规则,
 自动创建这些子类。这样客户端就需要很少具体实现的知识。
真正做到了面向接口编程,客户端不依赖子类实现。

这里写图片描述

总结

统一访问问题
spring通过定义一个Resource解决了IO URL获得资源访问接口的不一致
并提供了一些基本方法
加载资源问题
spring通过一个ResourceLoader接口DefaultResourceLoader 
实现类,解决了资源加载问题,客户端只传入字符串便可加载资源,
避免了客户端和实现之间的耦合。
编码层面上
Resource 接口
AbstractResource 抽象,对Resource的骨架实现
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值