spring源码解析(1)Resource

2021/9/13 17:34:42

本文主要是介绍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



这篇关于spring源码解析(1)Resource的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程