注:上一章:Spring源码解析-获取Bean工厂方法
Spring源码解析-Resource配置文件封装
前言
上一章了对Spring容器功能的大致描述,本章主要讲解Spring对配置文件的封装
spring最简单用法
Resource resource = new ClassPathResource("applicationContext.xml"); //加载资源文件
BeanFactory factory = new XmlBeanFactory(resource);//创建容器IOC对象
Bean userSpring = (Bean) factory.getBean("beanUser");//获取bean对象
本章主要讲解的是其中 Resource 接口
在阅读本章之前,需要了解的概念
在java中将不同来源资源抽象成URL,不同类型的URL一般使用不通前缀来区分,如:file:、http:、jar: 等等。java对于URL并没有提供一些基本的方法,如检查资源是否存在、检查资源是否可读等等。
Resource接口封装
对于URL没有提供一些基本方法,所以spring将所有的资源都封装在Resource接口中。
Resource接口资源文件处理类图
Resource接口继承了spring中的InputStreamSource接口,该接口只有一个方法——获取InputStream流。所以在日常开发中可以通过Resource接口接口从而获取InputStream流。
注:获取InputStream流的实现在继承接口的实现类中实现,实现方式很简单,就是使用classLoader类加载器中FileInputStream()方法获取。
Resource接口源码解析
Resource接口源码如下:
public interface Resource extends InputStreamSource {
boolean exists();//存在性
boolean isReadable();//可读性
boolean isOpen();//是否处于打开状态
URL getURL() throws IOException;//URL
URI getURI() throws IOException;//URI
File getFile() throws IOException;//File
long lastModified() throws IOException;//文件lastModified属性
Resource createRelative(String relativePath) throws IOException;//基于当前资源创建一个相对资源
String getFilename();//文件名
String getDescription();//用于错误处理中的打印信息
}
Resource接口抽象了所有Spring内部使用的底层资源:File、URL、Classpath等。
本章是作者看书后自己的见解,如有错误欢迎大家来纠正