美文网首页
Spring资源访问

Spring资源访问

作者: 醉里梦乡 | 来源:发表于2018-09-15 15:26 被阅读0次

文章内容来自本人学习《精通Spring 4.x 企业应用开发实战》一书的笔记整理,部分内容摘抄原文。

1、资源抽象接口

JDK所提供的访问资源的类(如 java.net.URL、File等)并不能很好地满足各种底层资源的访问需求,比如缺少从类路径或Web容器的上下文中获取资源的操作类。因此,Spring设计了一个Resource接口,它为应用提供了更强大的底层资源访问能力。

Resource接口主要方法

  • boolean exist():资源是否存在。

  • boolean isOpen():资源是否打开。

  • URL getURL():如果底层资源可以表示成URL,则返回对应的URL对象。

  • File getFile():如果底层资源对应一个文件,则返回对应的File对象。

  • InputStream getInputStream():返回资源对应的输入流。

Resource接口及实现类关系

image
  • WritableResource:可写资源接口,有三个实现类:FileSystemResource、PathResource、FileUrlResouce。

  • ByteArrayResouce:二进制数组表示的资源,可在内存中通过程序构造。

  • ClassPathResource:类路径下的资源。

  • FileSystemResouce:文件系统资源,如 D:/conf/bean.xml。

  • InputStreamResource:以输入流返回表示的资源。

  • ServletContextResource:为访问Web容器上下文中的资源而设计的类,负责以相对于Web应用根目录的路径加载资源。支持以流和URL的方式访问,在WAR解包情况下,也可以通过File方式访问,还可以直接从JAR包中访问资源。

  • UrlResource:URL封闭了java.net.URL,它使用户能够访问任何可以通过URL表示的资源,如文件系统的资源、HTTP资源、FTP资源等。

  • PathResource:4.0提供的新类,封装java.net.URL、java.nio.file.Path、文件系统资源,能够访问任何可以通过URL、Path、系统文件路径表示的资源。如文件系统资源、HTTP资源、FTP资源等。

测试DEMO

package com.hqq.spring.resource;

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 java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * Spring资源访问测试DEMO
 * Created by HUANGQIQIN on 2018/9/12.
 */
public class TestSpringResource {

    public static void main(String[] args) throws IOException {

        String filePath = "F:/ideawork/hqqstudy/springstudy/src/main/resources/text.txt";

        // 使用系统文件路径方式加载文件
        WritableResource writableResource = new PathResource(filePath);

        //使用WritableResource接口写资源
        OutputStream outputStream = writableResource.getOutputStream();
        outputStream.write("Hello World".getBytes("UTF-8"));
        outputStream.close();


        //使用类路径方式加载文件
       Resource classPathResource = new ClassPathResource("text.txt");

        // 如果资源文件采用特殊编码,可以使用以下方式设置编码格式
        // EncodedResource encodedResource = new EncodedResource(classPathResource, "UTF-8");
        // InputStream inputStream = encodedResource.getInputStream();

        InputStream inputStream = classPathResource.getInputStream();
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        int len = -1;
        while ((len = inputStream.read()) != -1){
            byteArrayOutputStream.write(len);
        }
        System.out.println(byteArrayOutputStream.toString());

    }
}

相关文章

  • Spring资源访问

    文章内容来自本人学习《精通Spring 4.x 企业应用开发实战》一书的笔记整理,部分内容摘抄原文。 1、资源抽象...

  • SpringBoot静态资源的访问和配置

    默认静态资源访问 Spring Boot的默认静态资源的路径为:spring.resources.static-l...

  • Spring的资源访问

    路径访问方式 Spring可以通过classpath、file、http、ftp、没有前缀五种方式访问资源 区别 ...

  • Spring Boot 系列(四)静态资源处理

    在web开发中,静态资源的访问是必不可少的,如:图片、js、css 等资源的访问。 spring Boot 对静态...

  • spring boot访问静态资源

    spring boot访问静态资源时,直接映射到 classpath:/static classpath:/pub...

  • 2018-07-01(6.30-资源访问工具类)

    jdk所提供的访问资源的类并不能很好的满足各种底层资源的访问需求,因此,Spring设计一个Resource接口,...

  • spring详解(七)

    3.资源访问: spring设计了一个Resource接口,它为应用提供了更强大的访问底层资源的能力。该接口拥有对...

  • Spring Security oAuth2简介

    概述 快速上手使用 Spring 提供的 Spring Security oAuth2 搭建一套验证授权及资源访问...

  • Spring MVC 静态资源访问

    我们在开发springMVC时,需要在web.xml中定义dispacherServlet,并指定相应的URL映射...

  • 【Spring】资源文件访问

    1. 介绍 Java本身提供了对资源文件访问的接口,Spring对于资源加载也有着一套自己的框架,相比之下会更加方...

网友评论

      本文标题:Spring资源访问

      本文链接:https://www.haomeiwen.com/subject/jdxtnftx.html