ResourceLoader用来返回Resource实例,下面是其定义:
public interface ResourceLoader { Resource getResource(String location); }
所有的 application contexts 都实现了ResourceLoader类。因此所有的application contexts 都可以用来获取Resource。
当你在特定的应用程序上下文上调用getResource(),并且指定的位置路径没有特定的前缀时,你将返回适合该特定应用程序上下文的资源类型。例如,假设对ClassPathXmlApplicationContext实例执行了以下代码片段:
Resource template = ctx.getResource("some/resource/path/myTemplate.txt");
在ClassPathXmlApplicationContext中,这个方法返回ClassPathResource,如果在FileSystemXmlApplicationContext中,方法返回FileSystemResource。 在WebApplicationContext, 方法返回ServletContextResource。 他会返回和ApplicationContext相对应的Resource实现。
因此,你可以以适合特定应用程序上下文的方式加载资源。
当然,你可以强制ClassPathResource使用,而不管ApplicationContext到底是什么。这样做你需要添加classpath:前缀。如下:
Resource template = ctx.getResource("classpath:some/resource/path/myTemplate.txt");
同样的,你可以强制使用UrlResource通过添加标准的java.net.URL前缀。
Resource template = ctx.getResource("file:///some/resource/path/myTemplate.txt"); Resource template = ctx.getResource("https://myhost.com/resource/path/myTemplate.txt");
下面是将String转换为Resource的策略:
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8