针对于资源文件的统一接口
Resource
UrlResource:URL对应的资源,根据一个URL地址即可构建
ClassPathResource:获取类路径下的资源文件
FileSystemResource:获取文件系统里面的资源
ServletContextResource:ServletContext封装的资源,用于访问ServletContext下的资源
InputStreamResource:针对于输入流封装的资源
ByteArrayResource:针对于字节数组封装的资源
ResourceLoader:
所有ApplicationContext都实现了ResourceLoader接口 可以调用getResource来获得Resource。
常实现ApplicationContextAware接口来覆盖setApplicationContext然后获取applicationContext
如下面:
public class MoocResource implements ApplicationContextAware {
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
this.applicationContext = applicationContext;
}
public void resource() throws IOException {
Resource resource = applicationContext.getResource("config.txt");
System.out.println(resource.getFilename());
System.out.println(resource.contentLength());
}
}
常用调用方法有如下几种:
classpath: context.getResource("classpath:com/myapp/config.txt)需要在java build path下配置
file: context.getResource("file:C:\\data\\config.txt")文件的路径
http:context.getResource("url:http://write.blog.csdn.net/postedit")
(none):context.getResource("config.txt") 由上下文决定即ApplicationContext决定