Spring 资源加载提供了一个非常通用的方法getResource()
,用于从文件系统,类路径,URL等位置获取资源(文本文件,媒体文件,图像文件...)。可以从Spring上下文中获取getResource()
方法。
1. 文件系统
Resource resource = appContext.getResource("file:c:\\testing.txt");
2. URL路径
Resource resource = appContext.getResource("url:http://www.yourdomain.com/testing.txt");
3. 类路径
Resource resource = appContext.getResource("classpath:test/testing.txt");
你只需指定资源的位置,Spring将处理并返回一个Resource
Bean资源加载器
由于bean没能访问应用程序上下文的访问权限,所以需要实现ResourceLoaderAware
来保存一个ResourceLoader
实例来加载Resource
@Service
public class CustomerService implements ResourceLoaderAware
{
private ResourceLoader resourceLoader;
public void setResourceLoader(ResourceLoader resourceLoader) {
this.resourceLoader = resourceLoader;
}
public Resource getResource(String location){
return resourceLoader.getResource(location);
}
}
这样通过CustomerService
保持了一个ResourceLoader
的实例,通过ResourceLoader
提供的getReource()
方法来加载Resource。
结论
如果没有这个 getResource()
方法,您将需要使用不同的解决方案来处理不同的资源,例如文件系统资源的File对象,URL资源的URL对象。Spring真的用这个超级通用的 getResource()
方法做得很好,它确实节省了我们处理资源的时间。