Spring的爬坑之路(四)简述配置文件封装
上文测试类中,我们用到了 new ClassPathResource(“Spring.xml”)方法。今天我们研究一下关于ClassPathResource的功能。
在Java中,将不同来源的资游抽象成 URL,通过注册不同的 handler( URLStreamHandler ) 来处理不同来源的资源的读取逻辑,一般 handler 的类型使用不同前缀(协议, Protocol )来识别,如“file:”“http:” “jar:”等,然而 URL 没有默认定义相对 Classpath或 ServletContext等资源的 handler,虽然可以注册自己的 URLStreamHandler来解析特定的 URL前缀(协议 ), 比如 classpath:”,然而这需要了解 URL实现机制,而且 URL也没有提供基本的方法,如检查当前资源是否存在、检查当前资源是否可读等方法。 因而 Spring 对其内部使用到的资源实现了自己的抽象结构 : Resource 接口封装底层资源 。
public interface InputStreamSource {
InputStream getInputStream() throws IOException;
}
public interface Resource extends InputStreamSource {
boolean exists();
default boolean isReadable() {
return exists();
}
default boolean isOpen() {
return false;
}
default boolean isFile() {
return false