b spring资源(resource)加载机制&API简单介绍

本文介绍了Java.net.URL在处理资源时的不足,然后详细阐述了Spring的Resource接口,包括其重要方法如getInputStream()、exists()和isOpen()。Resource接口作为Spring API中广泛使用的参数类型,提供了一种更强大、更灵活的资源访问方式,是URL的一个有力替代。
摘要由CSDN通过智能技术生成

–> go to 总目录

2.1 介绍

Java.net.URL的不足

java 标准的java.net.URL类可以处理多重多样的URL前缀,但是对low-level资源不够友好。没有URL的实现类可以被用来从classpath加载资源或者与ServeletContext相关联。也可以来时实现处理特殊的前缀(比如http:),但是普遍是十分复杂的。URL的接口,也缺少一些功能性的方法,比如去检查资源是否存在。

2.2 Resource接口

Resource接口的定义
在这里插入图片描述
它扩展了InputStreamSource接口的实现
在这里插入图片描述

Resource接口中比较重要的方法

  • getInputStream()
    定位和打开resource,返回InputStream接口以读取资源。它期待每个调用都会返回一个fresh的InputStream,调用者负责关闭掉。
  • exists()
    返回boolean,表明这个资源是都被真正存在
  • isOpen()
    返回一个boolean,来明确当前的资源是否被一个打开的stream处理。true是InputStream不能被多次的读,只能读一次然后关闭掉,避免冲突。false是通用的实现,伴有异常InputStreamResource
  • getDescription()
    返回一个队资源的描述
    其他方法就是让你真实的获取URLFile文件对象(代表资源)。

通过String的path等创建一个resource
当需要资源时,Spring本身广泛使用Resource抽象作为许多方法签名中的参数类型。一些Spring API中的其他方法(例如,各种ApplicationContext实现的构造函数)采用String形式,该字符串以未经修饰或简单的形式用于创建适合于该上下文实现的Resource,或者通过String路径上的特殊前缀,让调用者指定必须创建并使用特定的资源实现。
URL更强大的替代
尽管Spring和Spring经常使用Resource接口,但实际上,在您自己的代码中单独用作通用实用工具类来访问资源也非常有用,即使您的代码不了解或不关心其他任何东西Spring的一部分。虽然这将您的代码耦合到Spring,但实际上仅将其耦合到这套实用程序类,它们充当URL的更强大替代,并且可以被认为等同于您将用于此目的的任何其他库。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值