我們都知道java自身也提供了底層資源的方法,如(java.net.URL,File)等,
但是java所提供的並不支持訪問web容器資源的類,因此spring在此次方面做了強大的擴展,設計了Resource接口,提供了更強的底層資源訪問能力,也是spring重要的輔助類。Resource可以在完全不依賴spring容易的情況下運行,是個比較強大的資源訪問類。
Resource類關係圖(只列出常用)
Resource 接口主要提供瞭如下方法:
boolean exists();
// 資源是否存在
boolean isReadable();
//資源是否可讀取
boolean isOpen();
//資源是否打開
URL getURL() throws IOException;
//如果底層可以表示成URL,則返回URL對象
URI getURI() throws IOException;
//同上
File getFile() throws IOException; //如果是一個文件資源,則返回一個File對象
InputStream getInputStream() throws IOException;
//這個方法繼承至InputStreamSource 主要用於返回資源的輸入流
long contentLength() throws IOException;
//獲取文件的長度
long lastModified() throws IOException;
//獲取文件的最後修改時間
Resource createRelative(String relativePath) throws IOException;
//創建一個Resource對象,根據資源地址
String getFilename(); //獲取文件名稱
常用類解讀:
ByteArrayResource:二進制數組表示的資源,可通過文件二進制流構造Resource對象
FileSystemResource:文件系統資源訪問,和jdk File對象類似,需通過系統路勁進行資源訪問
ClassPathResource:可通過類路勁訪問資源,相對於jdk最大的擴展,可通過classpath方式訪問資源
ServletContextResource: 爲訪問web容器上下文而設計的類,負責以相對於web根路徑的資源訪問,支持流和URL方式進行訪問,也可以訪問jar包中得資源