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

  • 相关阅读:
    0045算法笔记——【随机化算法】舍伍德随机化思想搜索有序表
    精进~如何成为很厉害的人
    哪些小习惯一旦养成终生受用?
    2016第24周四
    2016第24周三
    2016第24周二
    2016第24周一
    2016第23周日
    前端资源汇总
    2016第23周五
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/15263368.html
Copyright © 2011-2022 走看看