Resource接口,有如下方法:
boolean exists(); 资源是否存在
boolean isOpen; 资源是否打开
URL getURL();
如果资源对应一个URL,
返回URL
File getFile(); 如果资源对应一个文件,返回文件
InputStream getInputStream(); 返回资源对应的输入流
Resource接口的实现类:
ByteArrayResource:
二进制数组表示的资源
ClassPathResource:
类路径下的资源,以类路径访问
FileSystemResource:
文件系统资源,以文件系统绝对路径访问
InputStreamResource:
对应一个InputStream资源
ServletContextResource:
为访问Web容器上下文中的资源设计的类,以相对于Web应用根目录的路径加载资源
UrlResource:
使用户可以访问任何通过URL表示的资源,例如文件系统、HTTP、FTP等资源
如果资源地址没有前缀,则根据以上实现类来加载;如果有前缀,可以直接使用 ResourceLoader接口自动区分类型
地址前缀
|
实例
|
对应资源类型
|
classpath
|
classpath:com/gome/doc/beans.xml
|
从类路径加载,相对于类的跟路径,资源文件可以在文件系统中,也可以在jar或zip的类包中
|
file:
|
file:/conf/com/……/beans.xml
|
从文件路径加载,可以是相对路径或者绝对路径
|
http://
|
http://www.gome.com/……/beans.xml
|
从Web服务器中加载资源
|
ftp://
|
ftp://www.gome.com/……/beans.xml
| 从FTP服务器中加载资源 |
Ant风格资源地址:
/t?st.xml ?代表一个字符
/*.xml *代表若干个字符
/**/test.xml **代表若干层路径
ResourceLoader
只有一个方法:getResource(String location)
资源地址仅支持带类型前缀的表达式,不支持Ant风格的
ResourcePatternResolver扩展ResourceLoader接口,方法:getResources(String locationPattern)
资源地址支持带前缀的或者Ant风格的