Spring Resource接口 学习

news2024/11/29 1:32:42

Resource 接口是 Spring 资源访问策略的抽象,它本身并不提供任何资源访问实现,具体的资源访问由该接口的实现类完成——每个实现类代表一种资源访问策略。Resource一般包括这些实现类:UrlResource、ClassPathResource、FileSystemResource、ServletContextResource、InputStreamResource、ByteArrayResource。

 UrlResource

Resource的一个实现类,用来访问网络资源,它支持URL的绝对路径。

http:------该前缀用于访问基于HTTP协议的网络资源。

ftp:------该前缀用于访问基于FTP协议的网络资源

file: ------该前缀用于从文件系统中读取资源

  测试例子

import org.springframework.core.io.UrlResource;

import java.io.InputStream;

//获取网址的对应信息
public class SpringURLResource {

    public static void getURLResource(String path) {
        try {
            UrlResource urlResource = new UrlResource(path);
            System.out.println(urlResource.getDescription());
            System.out.println(urlResource.getURL());
            System.out.println(urlResource.getFilename());
            InputStream inputStream = urlResource.getInputStream();
            byte[] b = new byte[1024];
            while (inputStream.read(b) != -1) {
               System.out.println(new String(b));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        //网址例子 1   
        getURLResource("http://baidu.com");
        //获取根路径例子 2
        getURLResource("file:hhh.txt");
    }
}

 测试结果:

 ClassPathResource

ClassPathResource 用来访问类加载路径下的资源,无须使用绝对路径访问。(可以理解为他会访问项目中的Resource文件夹中的文件)

   测试例子

import org.springframework.core.io.ClassPathResource;

import java.io.InputStream;

//ClassPathResource
public class SpringClassPathResource {

    public static void getClassPathResource(String path) {
        ClassPathResource classPathResource = new ClassPathResource(path);
        System.out.println(classPathResource.getDescription());
        System.out.println(classPathResource.getPath());
        System.out.println(classPathResource.getFilename());
        try {
            InputStream inputStream = classPathResource.getInputStream();
            byte[] b = new byte[1024];
            while (inputStream.read(b) != -1) {
                System.out.println(new String(b));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


    }

    public static void main(String[] args) {
        getClassPathResource("fff.txt");
    }
}

测试结果

 FileSystemResource

 Spring 提供的 FileSystemResource 类用于访问文件系统资源,使用 FileSystemResource 来访问文件系统资源并没有太大的优势,因为 Java 提供的 File 类也可用于访问文件系统资源。(就是可以访问本电脑各个盘中的文件)

测试例子

import org.springframework.core.io.FileSystemResource;

import java.io.InputStream;

//FileSystemResource
public class SpringFileSystemResource {

    public static void getFileSystemResource(String path) {
        FileSystemResource fileSystemResource = new FileSystemResource(path);
        fileSystemResource.getDescription();
        fileSystemResource.getFilename();
        fileSystemResource.getFile();
        try {
            InputStream inputStream = fileSystemResource.getInputStream();
            byte[] b = new byte[1024];
            while (inputStream.read(b) != -1) {
                System.out.println(new String(b));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {
        getFileSystemResource("C:\\tolen\\www.txt");
    }
}

 测试结果

ServletContextResource、InputStreamResource、ByteArrayResource

*ServletContextResource :这是ServletContext资源的Resource实现,它解释相关Web应用程序根目录中的相对路径。

*InputStreamResource :与其他Resource实现相比,这是已打开资源的描述符。 因此,它的isOpen()方法返回true。如果需要将资源描述符保留在某处或者需要多次读取流,请不要使用它。

 *ByteArrayResource : 字节数组的Resource实现类。通过给定的数组创建了一个ByteArrayInputStream。它对于从任何给定的字节数组加载内容非常有用,而无需求助于单次使用的InputStreamResource。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL基础(三十二)事务基础知识

1 数据库事务概述 1.1 存储引擎支持情况 SHOW ENGINES 命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。 能看出在 MySQL 中,只有InnoDB 是支持事务的。 1.2 基本概念 事务:一组逻辑操作单元,使数…

由浅入深理解java集合(三)——集合 List

一、List集合 List集合判断元素相等的标准 List判断两个对象相等只要通过equals()方法比较返回true即可(关于equals()方法的详解可以参考第二篇文章中的内容)。 下面以用代码具体展示。 创建一个Book类,并重写equals()方法,如果两…

ctf.show MiSC入门 图片篇 (信息附加)

目录 图片篇 信息附加 misc5 misc6 misc7 misc8 misc9 misc10 misc11 misc12 misc13 misc14 misc15 misc16 misc17 misc18 misc19 misc20 misc 21 misc22 misc23 misc41 图片篇 信息附加 misc5 打开后啥也没有 使用16进制编辑器打开,在最下面…

就业内推 | 上市公司招网工运维,有华为、思科、华三认证均可

01 软通动力 🔷招聘岗位:网络工程师 🔷职责描述: 1、负责大型数据中心网络运维及变更,包括架构优化、性能调优、服务上线 2、负责网络故障类问题定位及排查,对于复杂故障类问题能够定位、跟进和解决实施等…

数据分析案例-BI工程师招聘岗位信息可视化分析(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

25.在vue中使用axios

目录 1 项目中安装 axios 2 做测试用的后端 3 全局引入axios 4 定义全局根路径 1 项目中安装 axios 2 做测试用的后端 我们用python的flask做后端 简单来讲就是,发两个数字,如果是get就两个数相加,如果是post就两个数相乘 3 全局引…

Kali-linux使用Nessus

Nessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件,Nessus可同时在本机或远端上遥控,进行系统的漏洞分析扫描…

【数据结构初阶】——第八节.优先级队列(小根堆的模拟实现)

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:Java初阶数据结构 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 目录 …

API接口三问

一、API数据接口可以给我们带来哪些便利 API数据接口可以给我们带来以下便利: 数据共享:API允许数据在不同的应用程序之间共享。这使得数据转移更容易,因为不需要手动复制和粘贴数据内容。 程序集成:API作为中间件,可…

20年+资深审稿人:什么情况下建议文章大小修、拒稿或接收?

文章进入外审后,作者最终可能会得到大小修、接收或拒稿的意见。那么,审稿人是怎么给出这些不同意见的呢?有哪些方面需要作者提前了解呢? Surgery 发布过一篇文章,里面调查了一些具有20年审稿经验、平均年龄69岁的编委会…

ThreadLocal八股文

目录 1. 为什么要⽤ ThreadLocal? 2. ThreadLocal 的原理是什么? 3. 为什么⽤ ThreadLocal 做 key? 4. Entry 的 key 为什么设计成弱引⽤? 5. ThreadLocal 真的会导致内存泄露? 6. 如何解决内存泄露问题? 7. T…

1M分辨率 中国各城市绿地数据的获取

城市绿地系统是城市总体规划的有机组成部分,反映了城市的自然属性。在人类选址建造城市之初,大多将城市选择在和山、川、江、湖相毗邻的地方,它给予城市的形态、功能布局及城市景观以很大影响。先有自然,后有城市,自然…

时间序列预测(三)基于Prophet+XGBoost的销售额预测

时间序列预测(三)基于ProphetXGBoost的销售额预测 前面我们介绍了如何使用Prophet和LSTM,不知道你们发现了没有,前者似乎太简单了,后者呢好像又很复杂。那有没有什么很好的方法能很好的中和下呢? 已知的有…

入门黑客(网络安全)需要准备什么?

之所以写这篇文章呢,是觉得大时代的发展,我们这个专业越来越受到重视了,所以,也想以自己的一些拙见,能帮到想入门网络安全的朋友 1.关于网上的培训 如果你想快速获得知识,培训无疑是最快最有效的捷径&…

ANR概述

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言一、ANR是什么?二、ANR超时阈值三、前后与台区别1.前台与后台服务的区…

核心案例 | 南京理工大学空地协同编队控制系统建设项目

项目名称:空地协同编队控制系统建设项目 场 地:室内/室外 关 键 词:自主导航与SLAM、集群协同决策、集群控制 南京理工大学核心案例(1) 01 项目背景 本项目通过集群四旋翼无人机、天地协同集群控制开发环境、无人机协同集群控制系统…

音频转换成mp3的方法

把音频转换为MP3格式是因为MP3格式可以更好地压缩音频文件,减小文件大小,便于存储和传输。此外,MP3格式已成为流行的音频格式之一,许多设备和软件都支持MP3格式,使得MP3格式成为了一种通用的音频格式。总的来说&#x…

log4Qt史上最详细介绍、编译和使用

文章目录 Log4Qt介绍下载log4qt源码测试例子(源码使用)将log4qt源码添加到工程测试代码日志配置文件:测试结果 总结log4qt更多请参考: 使用Log4Qt动态库一、创建Qt工程,命名为libLog4Qt二、在项目根目录下新建文件夹3r…

Simulink使能(Enable)、触发(Triggered)模块及其子系统的应用

Simulink中的使能(Enable)和触发(Triggered)模块及其子系统可以用于控制模型中的仿真运行时间和采样周期,从而提高模型的仿真效率和精度。 使用使能子系统 创建一个在控制信号为正值时执行的子系统。使用触发子系统 创…

如何系列 如何在Windows和Linux安装Nginx

文章目录 Windows一 下载Nginx二 启动Nginx三 验证 Linux一 安装依赖项二 下载Nginx源码包三 安装四 验证五 常用命令附录 Nginx是一款高性能的开源Web服务器和反向代理服务器,被广泛用于构建现代化的Web应用和提供静态内容。本篇博文将教你如何在Windows和Linux操作…