Spring中的资源以及分类

Spring中的资源都被封装成 Resource 对象

 以上是我测试代码的项目编译后的目录结构,target 所在的目录是 

D:\\IdeaProjects\\study-spring\\
public void printStream(InputStream inputStream) throws IOException {


    Reader reader = new InputStreamReader(inputStream);

    BufferedReader bufferedReader = new BufferedReader(reader);

    String line = null;

    while ( (line = bufferedReader.readLine()) != null) {
        System.out.println(line);
    }
}

1.ClassPathResource 

ClassPathResource 是以classes目录为根目录进行查找,开头可以带 / 也可以不带

@Test
public void classPathResource() throws IOException {
    Resource resource = new 
       ClassPathResource("com/fll/start/resource_loader/InputResourceTest.class");
    InputStream inputStream = resource.getInputStream();
    printStream(inputStream);
}

 读取到了InputResourceTest.class的内容

@Test
public void classPathResource1() throws IOException {
    Resource resource = new ClassPathResource("beans.xml");
    InputStream inputStream = resource.getInputStream();
    printStream(inputStream);
}

 读取到了beans.xml的内容

2. FileSystemResource

FileSystemResource 是根据资源在磁盘上的绝对路劲进行加载的

@Test
public void fileSystemResource() throws IOException {

    Resource resource = new FileSystemResource("D:\\IdeaProjects\\study-spring\\target\\classes\\beans.xml");
    InputStream inputStream = resource.getInputStream();
    printStream(inputStream);
}

 成功加载到了beans.xml

 3.PathResource

 PathResource 和 FileSystemResource 有点类似可以按照磁盘绝对路劲加载资源,不同的是,PathResource是可以支持按照相对路径加载资源
按照绝对路径进行加载

@Test
public void pathResource() throws IOException {

    PathResource pathResource = new PathResource("D:\\IdeaProjects\\study-spring\\target\\classes\\com/fll/start/resource_loader/InputResourceTest.class");
    InputStream inputStream = pathResource.getInputStream();
    printStream(inputStream);
}

按照相对路劲进行加载

@Test
public void relativePathResource() throws IOException {

    PathResource pathResource = new PathResource("D:/IdeaProjects/study-spring/target/classes/com/fll/start/resource_loader/InputResourceTest.class");
    Resource relative = pathResource.createRelative("../DefaultResourceLoaderTest.class");
    InputStream inputStream = relative.getInputStream();
    printStream(inputStream);
}
@Test
public void relativePathResource1() throws IOException {

    PathResource pathResource = new PathResource("D:/IdeaProjects/study-spring/target/classes/com/fll/start/resource_loader/InputResourceTest.class");
    Resource relative = pathResource.createRelative("../../../../../beans.xml");
    InputStream inputStream = relative.getInputStream();
    printStream(inputStream);
}

都可以成功的加载到对应的资源

4.UrlResource

 UrlResource 可以用来加载 网络上的相关资源

@Test
public void urlResource() throws IOException {

    Resource resource = new UrlResource("https://www.baidu.com");

    InputStream inputStream = resource.getInputStream();

    printStream(inputStream);

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/908001.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

xtu oj 连接字符串

文章目录 回顾思路代码 回顾 AB III问题 H: 三角数问题 G: 3个数等式 数组下标查询,降低时间复杂度1405 问题 E: 世界杯xtu 数码串xtu oj 神经网络xtu oj 1167 逆序数(大数据)xtu oj 原根xtu oj 不定方程的正整数解xtu oj 最多的可变换字符串…

[Prometheus学习笔记]从架构到案例,一站式教程

文章目录 Prometheus 优势Prometheus 的组件、架构Prometheus Server 直接从监控目标中或者间接通过推送网关来拉取监控指标,它在本地存储所有抓取到的样本数据,并对此数据执行一系列规则,以汇总和记录现有数据的新时间序列或生成告警。可以通…

鸿蒙打包hvigorw clean报错No npmrc file is matched in the current user folder解决

问题 在执行hvigorw clean等命令时,报错如下: Error: The hvigor depends on the npmrc file. No npmrc file is matched in the current user folder. Configure the npmrc file first解决方案 在用户当前目录下新建.npmrc文件,并配置如下…

读数据工程之道:设计和构建健壮的数据系统27转换

1. 转换 1.1. 转换与查询不同 1.1.1. 查询是根据过滤和连接逻辑从各种来源检索数据 1.1.2. 转换将结果持久化,供其他转换或查询使用 1.1.2.1. 结果可以被短暂地或永久地保存 1.1.3. 除了持久性,转换区别于查询的另一个特点是复杂性 1.1.3.1. 你可能会建…

市场分化!汽车零部件「变天」

全球汽车市场的动荡不安,还在持续。 本周,全球TOP20汽车零部件公司—安波福(Aptiv)发布2024年第三季度财报显示,三季度公司经调整后确认收入同比下降6%;按照区域市场来看,也几乎是清一色的下滑景…

Java面试经典 150 题.P26. 删除有序数组中的重复项(003)

本题来自:力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解: class Solution {public int removeDuplicates(int[] nums) …

ONLYOFFICE 8.2版本桌面编辑器评测

目录 ONLYOFFICE 8.2版本桌面编辑器评测一、引言二、ONLYOFFICE 桌面编辑器概述2.1 功能特点2.2 系统支持2.3 数据表:ONLYOFFICE 桌面编辑器功能概述 三、ONLYOFFICE 协作空间3.1 协作功能3.2 部署和集成3.3 数据表:ONLYOFFICE 协作空间功能概述 四、ONL…

管道缺陷图像分割系统:入门训练营

管道缺陷图像分割系统源码&数据集分享 [yolov8-seg-vanillanet&yolov8-seg-C2f-DiverseBranchBlock等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源…

【文件处理】二、批处理(.bat) - 批量修改文件拓展名

一、简介 批处理(Batch Processing)是一种广泛应用于Dos和Windows系统种的脚本语言;它允许用户将一些列名称或程序组合在一起,形成可一次性执行的批处理文件。批处理文件的拓展名通常为".bat"、“.cmd”、".btm&q…

go-logger v0.27.0 - 并发性能为官方库 10 倍

go-logger是一个高性能的 golang 日志库,旨在提供快速、轻量级的日志记录功能 Github 使用文档 v0.27.0 更新内容 优化内存分配优化写数据性能增加日志属性自定义函数增加各个日志级别格式化打印函数 说明 性能优化是该版本最重要的更新内容。性能优化的结果&…

大零售时代下融合发展的新路径:定制开发技术的应用与思考

摘要:本文探讨在大零售背景下,传统零售边界模糊,融合成为趋势。分析大零售包含的跨行业跨业态融合等三个层面,重点阐述定制开发技术中的 21 链动模式、AI 智能名片和 S2B2C 商城小程序在推动大零售发展中的作用和意义,…

qt QSplitter详解

1、概述 QSplitter是Qt框架中的一个布局管理器类,它允许用户在应用程序窗口中创建可拖动的分隔器,以便动态地调整多个子窗口或控件的大小。QSplitter非常适合用于分割、重新排列和管理用户界面中的多个区域,提供了一种直观且灵活的方式来控制…

【6G 需求与定义】ITU(国际电联)对全球6G标准的愿景

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。 博客内容主要围绕…

《高频电子线路》—— 调幅电路

文章内容来源于【中国大学MOOC 华中科技大学通信(高频)电子线路精品公开课】,此篇文章仅作为笔记分享。 目录 调幅电路 分类 小结 模拟相乘器调幅电路 流程图比较 集成电路MC1596G实例 小结 单边带调幅电路 滤波法 移相法 修正的移相…

[java][框架]springMVC(1/2)

目标 知道SpringMVC的优点编写SpringMVC入门案例使用PostMan发送请求掌握普通类型参数传递掌握POJO类型参数传递掌握json数据参数传递掌握响应json数据掌握rest风格快速开发 一、SpringMVC简介 1 SpringMVC概述 问题导入 SpringMVC框架有什么优点? 1.1 Spring…

零基础玩转IPC之——如何实现远程实时查看监控视频(P2P)

P2P是peer-to-peer的简称,又称为点对点技术,是没有中心服务器、依靠用户群节点进行信息交换的对等式网络。区别于传统的C/S中央服务器结构,P2P网络中每一个用户节点即是客户端又是服务端,能同时作为服务器给其他节点提供服务。 优…

医院场景下电气设备的谐波治理

随着各种电气设备在医院诊疗中的使用越来越广泛,谐波源越来越多,造成线路及电源处的谐波污染也越来越大。某医院变电所有电源进线柜3个,现场的配电系统存在以下问题:出现配电线路损耗增大、发热、缩短绝缘寿命;出现电容…

电赛入门之软件stm32keil+cubemx

hal库可以帮我们一键生成许多基本配置,就不需要自己写了,用多了hal库就会发现原来用基本库的时候都过的什么苦日子(笑 下面我们以f103c8t6,也就是经典的最小核心板来演示 一、配置工程 首先来新建一个工程 这里我们配置rcc和sys&…

一篇文章理解前端中的 File 和 Blob

概述: js处理文件、二进制数据和数据转换的时候,提供了一些API和对象,例如:File、Blob、FileReader、ArraryBuffer、Base64、Object URL 和 DataURL。现在主要介绍File和Blob这两个对象。 1.Blob介绍 在js中,Blob&am…

react使用Fullcalendar

前言: 最近在做项目时,遇到了需要用日历的项目。一开始考虑使用antd的日历组件。后来 调研技术库,发现了fullcalendar 库。经过对比 fullcalendar 更强大,更灵活。 其实 antd的日历组件 也不错,简单的需求用他也行。…