該接口擁有對不同資源類型的實現類
boolean exists() 資源是否存在
boolean isOpen() 資源是否打開
URL getURL() 如果底層資源可以表示成URL,則該方法返回對應的URL對象
File getFile() 如果底層資源對應一個文件,則該方法返回對應的File對象
InputStream getInputStream() 返回資源對應的輸入流

WritableResource: 可寫資源接口,有兩個實現類FileSystemResource和PathResource
ByteArrayResource: 二進制數組標識的資源,二進制數組資源可以在內存中通過程序構造
ClassPathResource: 類路徑下的資源,資源以相對於類路徑的方式標識
FileSystemResource: 文件系統資源,資源以文件系統路徑的方式表示,如D:/conf/bean.xml
InputStreamResource: 以輸入流返回表示的資源
ServletContextResource: 以訪問Web容器上下文中的資源而設計的類,負責以相對於Web應用根目錄的路徑加載資源。它支持以流和URL的方式訪問,在WAR解包的情況下,也可以通過File方式訪問。該累還可以直接從JAR包中訪問資源
UrlResource: URL封裝了java.net.URL,它使用戶能夠訪問任何可以通過URL表示的資源,如文件系統的資源、HTTP資源、FTP資源等
PathResource: Spring4.0提供的讀取資源文件的新類。Path封裝了java.net.URL、java.nio.file.Path、文件系統資源,它使用戶能夠訪問任何可以通過URL、Path、系統文件路徑表示的資源
有了這個抽象的資源后,就可以將Spring的配置信息放置在任何地方,只要最終可以通過Resource接口返回配置信息即可
資源加載時默認采用系統編碼讀取資源內容,如果想更換編碼格式,可以通過EncodeResource對資源進行編碼,以保證資源內容操作的正確性
Resource res = new ClassPathResource("conf/file.txt");
EncodeResource encRes = new EncodedResource(res,"UTF-8");
資源地址表達式:

"classpath:"只會在第一個加載的包路徑下查找,而"classpath*":會掃描所有這些JAR包及路徑下出現的com.smart類路徑
資源加載器:
Spring定義了一套資源加載的接口,並提供了實現類

ResourceLoader接口僅有一個getResource(String location)方法,可以根據一個資源地質加載文件資源。不過資源地址僅支持帶資源類型前綴的表達式。PathMatchingResourcePatternResolver是Spring提供的標准實現類
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resourcePatternResolver.getResources("classpath*:com/wjc/ccf/**");
Assert.notNull(resources);
for (Resource resource : resources) {
System.out.println(resource.getDescription());
}
*用Resource操作文件時,如果資源配置文件在項目發布時會被打包到JAR中,那么不能使用Resource.getFile()方法,應該使用getInputStream()方法