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 节 “ |