前言
Spring中加载容器,首先第一步就先寻找资源文件。资源文件就是例如XML,File等。通过寻找资源文件,来解析资源文件,加载资源文件中定义的信息,最后启动Srping 容器。该文就是分析下Srping对资源文件的架构。
资源架构类图
InputStreamSource接口定义了,一个**getInputStream()**方法,该方法必须返回一个输入流 InputStream。
自 InputStreamSource 接口以下,所有的资源抽象类,实现类都必须返回一个输入流以用来提供Spring解析资源文件。
分析
Spring 对资源文件的架构很简单,唯一要求就是返回一个输入流。至于这个输入流从来哪里来,根本不关心。可以是File,可以是Byte。
ContextResource 该接口继承Resource ,ContextResource接口是对应用服务器的支持,其中的getPathWithinContext() 方法获取应用服务器的根目录,然后在通过根目录去加载资源。
其接口和类的设计,一目了然。
易于扩展,如果需要自己加载一个新的资源直接继承AbstractFileResolvingResource 抽象类即可。