spring--源码分析

Spring的配置文件是通过ClassPathResource来进行封装的,在Java中,不同的资源抽象成URL,通过注册不同的handle来处理不同的URL获取逻辑,一般的handle类型通过使用不同的前缀来来识别,比如file;http等,可以注册自己的URLStreamHandle来处理特定的前缀的文件,然而这需要检查当前的资源是否存在等。
对于不同的文件,Spring有不同的实现方式。

spring--源码分析

比如说,在系统中,我们可以使用
Resource re = new ClassPathResource("bean.xml");
InputStream in = re.getInputStream();得到InputStream的实例之后,就可以使用Resource及其子类提供的方法,进行相应的功能的开发了。

ClassPathResource : 类路径下的资源文件,使用classLoader或class加载资源,
支持文件系统下的资源以类路径,URL等方式加载资源,但是不支持jar包里面的资源。

ClassRelativeResourceLoader:将绝对路径下的资源解释为相对路径,给相应的类加载

UrlResource:URL定位的Resource资源的实现,支持URL路径或protocol协议下的文件

AbstractFileResolvingResource:用于加载UrlResource或ClassPathResource的路径
资源类的抽象基类。

DescriptiveResource:一个实现描述资源但不是一个真实资源的URL实现。

FileSystemResource:一个实现文件处理的资源实现,支持文件或URL,实现WriteResource接口

ByteArrayResource:一个实现字节数组的资源实现,为字节资源创建ByteArrayInputStream

AbstractResource:一个公共的抽象接口类供调用,这个exists方法用于检查是否一个文件或
输入资源是否存在,isOpen总是返回false,toString方法返回描述。

相关推荐