程序須要從不一樣的位置(文件系統,classpath,URL)讀取不一樣類型的資源(如文本文件,XML文件,properties文件或者圖片)。程序員須要使用不一樣的API來實現以上操做。java
Spring的ResourceLoader接口提供了getResource()方法統一處理資源的加載。使用帶有不一樣前綴的資源路徑,能夠從不一樣位置加載資源。程序員
一個類若是須要讓容器注入ResourceLoader,須要實現ApplicationContextAware接口,或者ResourceLoaderAware接口。web
例:spring
public class MyResourceLoader implements ResourceLoaderAware { private ResourceLoader rs; @Override public void setResourceLoader(ResourceLoader rs) { this.rs = rs; } public void getFile() throws FileNotFoundException, IOException { Resource f = rs.getResource("file:D:/Windowssrsi2.ini"); printFileContent(f); } public void getClasspathFile() throws FileNotFoundException, IOException { Resource f = rs .getResource("classpath:com/ljm/springrecipses/getresource/bean.xml"); printFileContent(f); } }
Spring支持將Resource做爲依賴進行注入。ide
bean:this
public class BannerLoader { private Resource banner; public void setBanner(Resource banner) { this.banner = banner; } ... ... }
配置文件:直接在value中設定Resource的路徑。spa
<bean id="bannerLoader" class="com.apress.springrecipes.shop.BannerLoader" init-method="showBanner"> <property name="banner"> <value>classpath:com/apress/springrecipes/shop/banner.txt</value> </property> </bean>