Spring源码解析(三)-Resource的分析

IoC容器初始化包括:Bean定义资源文件的定位、载入和注册3个基本过程

ClassPathResource resource = new ClassPathResource("beans.xml");
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
XmlBeanDefinitionReader  reader = new XmlBeanDefinitionReader(factory);
reader.loadBeanDefinitions(resource);

Resource,InputStreamSource的源代码

public interface Resource extends InputStreamSource {
    boolean exists();
    boolean isReadable();
    boolean isOpen();
    URL getURL() throws IOException;
    URI getURI() throws IOException;
    File getFile() throws IOException;
    long contentLength() throws IOException;
    long lastModified() throws IOException;
    Resource createRelative(String relativePath) throws IOException;
    String getFilename();
    String getDescription();
}

public interface InputStreamSource {
    InputStream getInputStream() throws IOException;
}

Resource的结构体系

Spring源码解析(三)-Resource的分析_第1张图片
Resource结构体系.png

为什么要定义Resource

这里的Resource其实和第一讲的BeanFactory有着异曲同工之妙,先定义好规范,让子类去扩展将功能完善!这里不做详细介绍了,简单的讲一下Resource的四个子类

 1.ClassPathResource:通过 ClassPathResource 以类路径的方式进行访问;
 2.FileSystemResource:通过 FileSystemResource 以文件系统绝对路径的方式进行访问;
 3.ServletContextResource:通过 ServletContextResource 以相对于Web应用根目录的方式进行访问。
 4.UrlResource :通过java.net.URL来访问资源,当然它也支持File格式,如“file:”

你可能感兴趣的:(Spring源码解析(三)-Resource的分析)