Spring的资源访问接口---Resource

保姆级教程:用Python从零提取语音MFCC特征(附完整代码与避坑指南) 本文提供了一份详细的Python教程,教你从零开始实现语音MFCC特征提取的全流程。涵盖环境准备、音频可视化、预加重处理、分帧加窗、频域转换、Mel滤波器组设计、MFCC系数提取等7个关键步骤,并附完整代码与避坑指南。特别针对语音识别中的维度对齐、数值溢出等实际问题提供解决方案,帮助开发者快速掌握MFCC特征提取技术。 阅读详情

转载自:https://www.2cto.com/kf/201803/731102.html

JDK提供的访问资源的类(File等)不能很好满足各种某些资源的访问需求。比如缺少从类路径和Web容器的上下文中获取资源的资源操作类。Spring的Resource接口提供了更好用的资源访问能力。Spring使用Resource访问各种资源文件,配置文件资源,国际化属性资源等。

Resource.java
Resource 继承了 InputStreamSource

package org.springframework.core.io;
 
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URL;
import org.springframework.core.io.InputStreamSource;
 
public interface Resource extends InputStreamSource {
    boolean exists();//资源是否存在
    boolean isReadable();
    boolean isOpen();//资源是否打开
    URL getURL() throws IOException;//如果底层资源可以表示成URL,则返回对应的URL对象
    URI getURI() throws IOException;
    File getFile() throws IOException;//如果底层资源是一个文件,则返回对应的File对象
    long contentLength() throws IOException;
    long lastModified() throws IOException;
    Resource createRelative(String var1) throws IOException;
    String getFilename();
    String getDescription();
}

InputStreamSource .java

package org.springframework.core.io;
 
import java.io.IOException;
import java.io.InputStream;
 
public interface InputStreamSource {
    InputStream getInputStream() throws IOException;//返回资源对应的输入流
}

介绍两个最常用的Resource实现类:

  • WritableResource:可写资源接口。两个实现类PathResource和FileSystemResource
  • ClassPathResource:用于加载类路径下的资源。当资源是在项目里的时候,用这个,相对路径。
  • FileSystemResource:用于加载文件系统资源,如:D:/conf/test.xml ,绝对路径。
  • UrlResource:访问任何可以通过URL表示的资源,包括文件系统资源、HTTP资源、FTP资源
  • PathResource:可以访问任何通过URL、Path、系统文件路径表示的资源

资源访问Demo – FileSourceExample .java

package springResources;
 
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.PathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.WritableResource;
import org.springframework.core.io.support.EncodedResource; 
import java.io.*;
 
/**
 * Created by Mistra-WR on 2018/3/18/018.
 */
public class FileSourceExample {
    public static void main(String [] args){
        try {
            String  filePath = "D:/Working/Spring/src/main/resources/conf/resourceFileTest.txt";
            //使用系统文件路径方式加载文件
            WritableResource res1 = new PathResource(filePath);
            //使用类路径方式加载文件
            Resource res2 = new ClassPathResource("conf/resourceFileTest.txt");
 
            EncodedResource encRes = new EncodedResource(res2,"UTF-8");//可以对资源进行特定编码
            File file1 = res1.getFile();//获得File对象
            File file2 = encRes.getResource().getFile();//获得File对象
 
            OutputStream stream1 = res1.getOutputStream();//获取文件输出流
            stream1.write("我是那天空飘荡的风筝".getBytes());
            stream1.close();
 
            //使用Resource接口读资源文件
            InputStream ins1 = res1.getInputStream();//获取文件输入流
            InputStream ins2 = res2.getInputStream();
 
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            int i;
            while ((i = ins1.read())!=-1){
                baos.write(i);
            }
            System.out.println(baos.toString());
 
            System.out.println("res1:" + res1.getFilename());//获得文件名
            System.out.println("res2:" + res2.getFilename());
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}
/* Output:
我是那天空飘荡的风筝
res1:resourceFileTest.txt
res2:resourceFileTest.txt
*///:~

资源类型的地址前缀

  • classpath:classpath:com/smart/beans.xml 从类路径中加载资源
  • file:file:/conf/com/smart/beans.xml
  • UrlResource从文件系统目录中装载资源,可采用绝对或相对路径 https://:https://www.smart.com/resource/beans.xml
  • UrlResource从Web服务器中装载资源 ftp://:ftp://www/smartcom/resource/beans.xml
  • UrlResource从FTP服务器中装载资源 没有前缀: 根据ApplicationContext进行判断采用对应类型的Resource
  • classpath:和classpath*:的区别:主要在于多个模块打包的应用时的区别。具体参考:Spring加载resource时classpath*:与classpath:的区别

Ant风格的资源地址支持3种匹配符

  • ?:匹配文件名中的一个字符
  • *:匹配文件名中的任意字符
  • ** :匹配多层路径

资源加载Demo – PatternResolverTest .java

package springResources;
 
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.testng.annotations.Test;
 
/**
 * Created by Mistra-WR on 2018/3/20/020.
 */
public class PatternResolverTest {
 
    @Test
    public void getResources() throws Throwable{
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
 
        Resource resource[] = resolver.getResources("classpath*:com/smart/**/*.xml");
 
        for (Resource resource1:resource){
            System.out.println(resource1.getDescription());
        }
    }
}
/* Output:
file [D:\Spring4\target\classes\com\smart\xxx.xml]
...
*///:~

PathMatchingResourcePatternResolver将扫描虽有类路径下及JAR包中对应com.smart类包下的路径,读取所有以.xml为后缀的文件资源。

Spring中的设计模式 今天不容易,明天会更难,但是后天一定会更美好。Spring中使用到的设计模式:工厂模式,BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象。单例模式,Spring依赖注入Bean实例默认是单例的。Spring依赖注入(包括lazy-init方式)都是发生在AbstractBeanFactory的getBean里。getBean的doGetBean方法调用getSingleton进行bean的创建。策略模式,Spring框架的资源访问Resource接口。 阅读详情

相关推荐

Cadence PCB SI仿真实战:如何手动添加VIA过孔模型提升板级链路精度

本文详细介绍了在Cadence PCB SI仿真中如何手动添加VIA过孔模型以提升DDR4/5设计的精度。通过参数化建模和三维全波建模技术,工程师可以有效解决高速设计中的信号完整性问题,显著降低仿真误差。文章还提供了实战案例和常见问题解决方案,帮助优化板级链路性能。

weixin_28683391的博客 401

Spring 资源操作 Resources

Spring 资源操作 Resources

weixin_46759354的博客 590

STM32 I²C外设深度解析:时序配置、主从模式与可靠性工程

I²C是一种广泛应用于嵌入式系统的同步串行总线协议,其核心在于精确的时序控制与可靠的电气特性匹配。理解SCL/SDA信号建立/保持时间、上升下降沿约束及硬件滤波机制,是保障通信稳定的基础;STM32通过I2C_TIMINGR寄存器实现对PRESC、SCLH、SCLL、SDADEL和SCLDEL等关键参数的精细调控,直接影响tSU:DAT、tVD:DAT等标准时序合规性;该能力支撑工业级高可靠场景下的主从双向通信、时钟拉伸管理与错误恢复;本文聚焦STM32平台,结合寄存器级配置、状态机行为与实战调试经验,系统

weixin_42146230的博客 86

Spring-Resource接口

4.1.1 概述 在日常程序开发中,处理外部资源是很繁琐的事情,我们可能需要处理URL资源、File资源资源、ClassPath相关资源、服务器相关资源(JBoss AS 5.x上的VFS资源)等等很多资源。因此处理这些资源需要使用不同的接口,这就增加了我们系统的复杂性;而且处理这些资源步骤都是类似的(打开资源、读取资源、关闭资源),因此如果能抽象出一个统一的接口来对这些底层资源进行统...

weixin_30482383的博客 452

飞牛NAS挂载115网盘避坑指南:为什么你的大文件总是传输失败?

本文深入解析了在飞牛NAS上通过AList挂载115网盘时,大文件传输失败的深层原因,包括风控机制、网络协议及兼容性问题。文章提供了从基础排查到高阶优化的系统性解决方案,并建议采用Kopia分片备份等终极策略,以实现稳定可靠的云端数据流转。

weixin_29306011的博客 1676

SAP FB03凭证修改实战:巧用BAPI FI_DOCUMENT_CHANGE更新抬头与行项目

本文详细介绍了SAP FB03凭证修改的实战技巧,重点解析了BAPI FI_DOCUMENT_CHANGE的使用方法。通过该接口,用户可以在不冲销原凭证的情况下直接更新抬头文本(BKTXT)和行项目文本(SGTXT),确保凭证编号连续且符合审计要求。文章包含核心机制解析、完整实现步骤、错误处理方案以及高级应用场景,帮助开发者高效完成SAP财务凭证修改。

weixin_29251567的博客 420

Spring资源访问接口------------Resource

资源抽象接口 JDK提供的访问资源的类 (java.net.URL  File)不能很好地满足各种底层资源的访问需求, Spring设计了一个Resource接口, 提供了更强的底层资源访问能力.  Spring的Resource接口及其实现类可以在脱离Spring框架的情况下使用. Resource接口及其实现类示意图: WritableResource: 可写资源接口, Spring...

huhahuha_的博客 458

Mac上VMware Fusion手动安装VMware Tools实现跨系统复制粘贴

本文详细指导了在Mac的VMware Fusion中手动安装VMware Tools的完整流程,以解决虚拟机与宿主机之间无法复制粘贴的常见问题。通过定位安装镜像、挂载、解压并运行安装脚本,最终实现跨系统无缝数据交换,提升工作效率。

orange的博客 696

【Spring】Resource接口访问资源

Spring提供了Resource接口,为应用提供了更强的底层资源访问能力,该接口拥有对应不同资源类型的实现类。 资源访问接口 主要方法 boolean exists() 资源是否存在 boolean isOpen() 资源是否打开 URL getURL() throws IOException 如果底层资源可以表示成URL,则该方法放回对应的URL对象 File getFile() thro...

ngc_1277 241

Captcha must be filled out,解决Kaggle新用户注册无法弹出验证提示的问题

Captcha must be filled out

weixin_46713695的博客 5万+

【YOLOv10[基础]】热力图可视化实践③ | 热力图脚本升级 | 优化可视化效果 | 论文必备 | GradCAMPlusPlus, GradCAM, XGradCAM, EigenCAM等

热力图可视化实践③ | 热力图脚本升级 | 优化可视化效果 | 论文必备 | 遥遥领先

静谧、淡雅 3217

Resource 接口是 Spring 资源访问的接口,具体的资源访问由该接口的实现类完成

Spring 框架提供了很好的扩展性,除了可以与各种第三方框架良好整合外,其 IoC 容器也允许开发者进行扩展,这种扩展甚至无须实现 BeanFactory 或 ApplicationContext 接口, 而是允许通过两个后处理器对 IoC 容器进行扩展

HEMM000的专栏 1366

《使用R包ggtree进行进化树的绘制与美化》

都2023年了,才去使用Y叔早在2018年发表的进化树构建利器——ggtree。刚好最近在做基因家族分析,进化树的构建与美化确实有点麻烦,先前使用MEGA11进行了绘制,但图像简陋,于是导出了nwk文件,准备使用其他软件进行美化。这里,我使用ggtree包进行操作。

沉香best的博客 6891

Spring Resource接口进行资源访问

前言 什么是资源?我们已知Spring中有很多xml配置文件,同时还可能自建各种properties资源文件,还有可能进行网络交互,收发各种文件、二进制流等。粗略可分为:URL资源、File资源、ClassPath相关资源、服务器相关资源(JBoss AS 5.x上的VFS资源)。Spring把这些文件、二进制流统称为资源。程序对这些资源的访问,就叫做资源访问。 ...

成长之路 3993

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Spring学习(九)资源访问接口Resource

JDK所提供的访问资源的类并不能很好的满足各种底层资源的访问需求,比如缺少从类路径或者从web容器的上下文中获取资源的操作类。因此,Spring设计了一个Resource接口,它为应用提供了更强大的访问底层资源的能力。该接口拥有对应不同资源类型的实现类。 那么先来了解一下resource资源中的主要方法: 1.    boolean exists():判断资源是否存在 2.    b

wangxin1248的博客 1484

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Spring3外部资源访问之Resource接口

概述 在日常程序开发中,处理外部资源是很繁琐的事情,我们可能需要处理URL资源、File资源资源、ClassPath相关资源、服务器相关资源(JBoss AS 5.x上的VFS资源)等等很多资源。因此处理这些资源需要使用不同的接口,这就增加了我们系统的复杂性;而且处理这些资源步骤都...

chifancui9836的博客 183

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

spring-第十四篇之资源访问Resource接口

1、Resource接口提供的主要方法 1》getInputStream():定位并打开资源,返回资源对应的输入流。每次调用都返回新的输入流。调用者必须负责关闭输入流。 2》isOpen():返回资源文件是否打开,如果资源文件不能多次读取,每次读取结束时应该显式关闭,以防止资源泄漏。 3》exists():返回Resource所指向的资源是否存在。 ...

weixin_30409849的博客 106

【小家Spring】资源访问利器---Spring提供的Resource接口以及它的常用子类源码分析

前言 资源是一个抽象的概念,什么是资源?我们已知Spring中有很多xml配置文件,同时还可能自建各种properties资源文件,还有可能进行网络交互,收发各种文件、二进制流等。 资源粗略的可以分为(这里以Spring的分类为例): URL资源 File资源 ClassPath相关资源 服务器相关资源(JBoss AS 5.x上的VFS资源) JDK操纵底层资源基本就是java.net.UR...

架构师:通透,才能写出好代码! 1704

arr访问绝对地址_spring-boot: 相对路径:classpath: Resource 接口: 访问资源

java.net.URLclasspath:类路径:就是应用的源码路径:tomcat/webapps/应用/源码文件夹ServletContext遗憾的是,Java的标准java.net.URL类和各种URL前缀的标准处理程序不足以完全访问低级资源。 例如,没有标准化的URL实现可用于访问需要从类路径或相对于ServletContext获取的资源。 虽然可以为专用URL前缀注册新的处理程序(类似于...

weixin_39611754的博客 186

(十)spring资源访问Resource接口

如果想要进行磁盘文件的读取操作,首先想到的一定是java.io包中提供的一系列类,还可以继续深入的想到ImputStream,OutputStream,Scanner,PrintStream,BufferedReader等核心的处理操作类.但是现在有如下几个问题, 这几个类的互相操作难度太高,很多人实际上对于IO的领悟并不是很彻底, IO支持的读取有限且复杂: ...

007的博客 326

Spring学习----------资源访问接口Resource

JDK所提供的访问资源的类并不能很好的满足各种底层资源的访问需求,比如缺少从类路径或者从web容器的上下文中获取资源的操作类。因此,Spring设计了一个Resource接口,它为应用提供了更强大的访问底层资源的能力。该接口拥有对应不同资源类型的实现类。那么先来了解一下resource资源中的主...

京GHK008 468

Spring框架中的Resource接口是什么,以及它在加载和访问资源时的关键作用

ResourceResource接口是 Spring 框架中用于加载和访问资源的关键组件。它提供了一种统一的方式来处理不同类型的资源,包括类路径下的资源和文件系统中的资源。通过使用Resource接口,您可以更灵活地管理应用程序中的资源,无论这些资源实际上存储在哪里。希望这篇文章能够帮助您更好地理解和使用 Spring 框架中的Resource接口。通过合理利用Resource接口,您可以更好地组织和管理应用程序中的资源,使其更具可维护性和扩展性。后记 👉👉💕💕美好的一天,到此结束,下次继续努力!!

weixin_65175398的博客 1557

攻城狮在路上(贰) Spring(三)--- Spring 资源访问利器Resource接口

Spring为了更好的满足各种底层资源的访问需求。设计了一个Resource接口,提供了更强的访问底层资源的能力。Spring框架使用Resource装载各种资源,包括配置文件资源、国际化属性文件资源等。一、Resource接口的主要方法有:  boolean exists():资源是否存在。  boolean isOpen():资源是否打开。  URL getURL():如果底层资源可...

116

spring学习笔记(2)文件资源访问接口Resource

spring 资源抽象接口下的几个常用实现类 实现类 说明 ClassPathResource 类路径下的资源,资源以相对类路径的方式表示 FileSystemResource 文件系统资源,资源以文件系统路径的的方式表示,如/home/root/test.txt ServletContextResource 为访问web上下文中的资源而设计的类,负责以相对于web应用

总结沉淀 1806
上一篇: 处理 multipart 请求
下一篇: git中文件提交错误后的回滚
sxudong2010
博客等级 码龄9年 27粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值