当前位置: 首页 > article >正文

Spring中的资源Resource 以及分类(多种资源的实现类)

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);

}


http://www.kler.cn/a/382313.html

相关文章:

  • 制作gif动图并穿插到CSDN文章中
  • 疯狂Java讲义-Java基础类库
  • Jtti:FTP服务器与HTTP服务器的区别有哪些?
  • 免费,基于React + ECharts 国产开源 IoT 物联网 Web 可视化数据大屏
  • Go 函数的使用
  • 在CentOS 7上安装Alist
  • Follow软件的使用入门教程
  • PostgreSQL 字段按逗号分隔成多条数据的技巧与实践 ️
  • ClickHouse创建账号和连接测试
  • 【LeetCode】【算法】338. 比特位计数
  • TS-AWG控制电光调制器:推动科技应用新发展的利器
  • 一个.NET开源、轻量级的运行耗时统计库 - MethodTimer
  • Allegro: 开源的高级视频生成模型
  • 服务器的配置复杂,租用时该如何选择参数?
  • 数据库->索引
  • 入门车载以太网(3) -- 网络层
  • 核心概念解析Caffeine 缓存模型与策略
  • 在函数 \( f(x+1) = x^2 + 1 \) 中,\( x \) 和 \( x+1 \) 代表不同的概念
  • ElasticSearch认识
  • HFSS学习笔记(五)金属过孔、复制模型带激励等问题(持续更新...)
  • 【大数据学习 | kafka】kafka的偏移量管理
  • 黄山谷捷:以创新为翼,领航新能源汽车散热基板行业
  • kotlin android Handler removeCallbacks runnable不生效的一种可能
  • 033_Structure_Static_In_Matlab求解结构静力学问题两套方法
  • Oracle 第24章:云数据库服务
  • 基于Python的智能旅游推荐系统设计与实现