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

  • 相关阅读:
    使用vscode 用git 拉取代码,提示:在签出前,请清理存储库工作树
    区分手机端和pc端加载不同的样式
    关于vue的代码规范
    各种名词汇总整理
    ZB埋点汇总
    项目实战 OLAP数据提取
    大数据intern_1总结:数据埋点以及SQL复习
    leetcode 343+279+91+64+70 动态规划
    leetcode 241 加优先级括号
    leetcode 17+79+93+46+47+77+39+40+78+90+131+37 回溯法
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/15263368.html
Copyright © 2011-2022 走看看