zoukankan      html  css  js  c++  java
  • spring源码解析(1)Resource

    大家知道,spring项目一般都有一个resources目录,一般存一些配置文件。

    为了读取这些文件,spring设计了Resource接口,定义了三个方法?

    存在?可读吗?可打开吗?

    并定义了Resource对象到URL、URI和File对象和文件名字符串的转换

    public interface Resource extends InputStreamSource {
        boolean exists();
    
        default boolean isReadable() {
            return this.exists();
        }
    
        default boolean isOpen() {
            return false;
        }
    
        default boolean isFile() {
            return false;
        }
    
        URL getURL() throws IOException;
    
        URI getURI() throws IOException;
    
        File getFile() throws IOException;
    
        default ReadableByteChannel readableChannel() throws IOException {
            return Channels.newChannel(this.getInputStream());
        }
    
        long contentLength() throws IOException;
    
        long lastModified() throws IOException;
    
        Resource createRelative(String var1) throws IOException;
    
        @Nullable
        String getFilename();
    
        String getDescription();
    }

    这个类只有一个父类,InputStreamSource,也就是说Resource可以任意向Inputstream对象来进行转化

    public interface InputStreamSource {
        InputStream getInputStream() throws IOException;
    }

    对于不同的文件类型,都有不同的子类实现:

    文件:FileSystemResource

    classpath资源:ClassPathResouce

    URL资源:UrlResource

    InputStream资源:InputstreamResource

    Byte数组:ByteArrayResource

    大家最常用的应该是

    Resouce resouce=new ClassPathResouce('*.properties');

    InputStream in=resouce.getInputStream();

    其底层是通过java提供的class或classLoader将文件对象解析成InputStream

  • 相关阅读:
    JS项目快速压缩(windows平台)
    Maven工程的POM继承
    Docker构建一个node镜像
    win10家庭版安装Docker for Windows
    linux,vim和bash命令小册
    vue文档阅读笔记——计算属性和侦听器
    nodejs的jekins部署
    `vue-router`的`History`模式下的项目发布
    花式图表,炫技时刻!PPT技能
    在创业之路上不断创新
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/15263368.html
Copyright © 2011-2022 走看看