ResourceLoader 接口由能返回(或者载入)Resource 实例的对象来实现。
public interface ResourceLoader {
Resource getResource(String location);
}
所有的application context都实现了 ResourceLoader 接口,
因此它们可以用来获取Resource 实例。
当你调用特定application context的 getResource() 方法,
而且资源路径并没有特定的前缀时,你将获得与该application context相应的 Resource 类型。例如:假定下面的代码片断是基于ClassPathXmlApplicationContext 实例上执行的:
Resource template = ctx.getResource("some/resource/path/myTemplate.txt");
这将返回ClassPathResource;如果是基于FileSystemXmlApplicationContext 实例上执行的,那你将获得FileSystemResource。而对于 WebApplicationContext
你将获得ServletContextResource,依此类推。
这样你可以在特定的application context中用流行的方法载入资源。
另一方面,无论什么类型的application context,
你可以通过使用特定的前缀 classpath: 强制使用ClassPathResource。
Resource template = ctx.getResource("classpath:some/resource/path/myTemplate.txt");
同样的,你可以用任何标准的 java.net.URL 前缀,强制使用 UrlResource :
Resource template = ctx.getResource("file:/some/resource/path/myTemplate.txt");
Resource template = ctx.getResource("http://myhost.com/resource/path/myTemplate.txt");
下面的表格概述了 String 到 Resource 的转换规则:
表 4.1. Resource strings
| 前缀 | 例子 | 说明 |
|---|---|---|
classpath: |
|
从classpath中加载。 |
file: |
|
作为 |
http: |
|
作为 |
(none) |
|
根据
|
[a] 参考标题为 第 4.7.3 节 “
| ||