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

  • 相关阅读:
    数据库使用时应该避开的坑
    Linux 命令 curl 的用法及参数解析
    分析 Redis 是否适合作为消息队列
    WEB框架对比——Django、Flask、FastAPI
    视频下载神器——you-get
    QtScrcpy——开源的电脑控制手机(投屏+控制)软件
    Python库大全
    Docker 清理数据卷 volumes
    报错解决——失败
    微信电脑端多开
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/15263368.html
Copyright © 2011-2022 走看看