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

  • 相关阅读:
    轨迹纠偏算法
    OpenStreetMap
    postgres create new super user
    postgis docker
    scala 命令台参数解析
    book
    Microsoft 365:OneDrive新特性,跨部门共享和协作
    2020年6月Microsoft 365 新功能速递
    Microsoft 365 解决方案:未经身份验证的用户上载文档小技巧 (2)
    Microsoft 365 解决方案:外部用户无法打开Microsoft Teams下录制的视频
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/15263368.html
Copyright © 2011-2022 走看看