外部資源獲取

處理外部資源是很繁瑣的事情,我們可能需要處理URL資源、File資源資源、ClassPath相關資源、服務器相關資源(JBoss AS 5.x上的VFS資源)等等很多資源。因此處理這些資源需要使用不同的接口,這就增加了我們系統的復雜性;而且處理這些資源步驟都是類似的(打開資源、讀取資源、關閉資源),因此如果能抽象出一個統一的接口來對這些底層資源進行統一訪問,是不是很方便,而且使我們系統更加簡潔,都是對不同的底層資源使用同一個接口進行訪問。

?????? Spring 提供一個Resource接口來統一這些底層資源一致的訪問,而且提供了一些便利的接口,從而能提供我們的生產力。

? Resource接口

?????? Spring的Resource接口代表底層外部資源,提供了對底層外部資源的一致性訪問接口。

?

java代碼:
Java代碼??收藏代碼
  1. public?interface?InputStreamSource?{??
  2. ????InputStream?getInputStream()?throws?IOException;??
  3. }??

?

java代碼:
Java代碼??收藏代碼
  1. public?interface?Resource?extends?InputStreamSource?{??
  2. ???????boolean?exists();??
  3. ???????boolean?isReadable();??
  4. ???????boolean?isOpen();??
  5. ???????URL?getURL()?throws?IOException;??
  6. ???????URI?getURI()?throws?IOException;??
  7. ???????File?getFile()?throws?IOException;??
  8. ???????long?contentLength()?throws?IOException;??
  9. ???????long?lastModified()?throws?IOException;??
  10. ???????Resource?createRelative(String?relativePath)?throws?IOException;??
  11. ???????String?getFilename();??
  12. ???????String?getDescription();??
  13. }??

?

?

1)InputStreamSource接口解析:

? ? ? ? ?getInputStream每次調用都將返回一個新鮮的資源對應的java.io. InputStream字節流,調用者在使用完畢后必須關閉該資源。

2)Resource接口繼承InputStreamSource接口,并提供一些便利方法:

? ? ? ? ?exists返回當前Resource代表的底層資源是否存在,true表示存在。

? ? ? ? ?isReadable返回當前Resource代表的底層資源是否可讀,true表示可讀。

? ? ? ? ?isOpen返回當前Resource代表的底層資源是否已經打開,如果返回true,則只能被讀取一次然后關閉以避免資源泄露;常見的Resource實現一般返回false。

? ? ? ? ?getURL如果當前Resource代表的底層資源能由java.util.URL代表,則返回該URL,否則拋出IOException。

? ? ? ? ?getURI如果當前Resource代表的底層資源能由java.util.URI代表,則返回該URI,否則拋出IOException。

? ? ? ? ?getFile如果當前Resource代表的底層資源能由java.io.File代表,則返回該File,否則拋出IOException。

? ? ? ? ?contentLength返回當前Resource代表的底層文件資源的長度,一般是值代表的文件資源的長度。

? ? ? ? ?lastModified返回當前Resource代表的底層資源的最后修改時間。

? ? ? ? ?createRelative用于創建相對于當前Resource代表的底層資源的資源,比如當前Resource代表文件資源“d:/test/”則createRelative(“test.txt”)將返回表文件資源“d:/test/test.txt”Resource資源。

? ? ? ? ?getFilename返回當前Resource代表的底層文件資源的文件路徑,比如File資源“file://d:/test.txt”將返回“d:/test.txt”,而URL資源http://www.javass.cn將返回“”,因為只返回文件路徑。

? ? ? ? ?getDescription返回當前Resource代表的底層資源的描述符,通常就是資源的全路徑(實際文件名或實際URL地址)。

?

Resource接口提供了足夠的抽象,足夠滿足我們日常使用。而且提供了很多內置Resource實現:ByteArrayResource、InputStreamResource 、FileSystemResource 、UrlResource 、ClassPathResource、ServletContextResource、VfsResource等。

?

轉載于:https://www.cnblogs.com/doudouxiaoye/p/5779786.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260859.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260859.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260859.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

芯明天debug assertion failed_YJLV鋁芯電力電纜的基本介紹

原標題:YJLV鋁芯電力電纜的基本介紹YJLV鋁芯電力電纜,型號全稱:鋁芯交聯聚乙烯絕緣聚氯乙烯護套電力電纜。YJLV電纜的含義為:YJ----交聯聚乙烯絕緣;L----線芯材質為鋁材。V----聚氯乙烯護套。YJLV電纜工作溫度為導體額定工作溫度9…

1.1.1 從簡單的數據類型開始

/// <summary>/// C# 1.0 中定義的產品類型/// </summary>public class Product1{string name;public string Name { get { return name; } }decimal price;public decimal Price { get { return price; } }public Product1(string name, decimal price){this.name…

第2章 Python 數字圖像處理(DIP) --數字圖像基礎3 - 圖像內插 - 最近鄰內插 - 雙線性插值 - 雙三次內插 - 圖像放大

目錄圖像內插放大圖像圖像內插 內插通常在圖像放大、縮小、旋轉和幾何校正等任務中使用。內插并用它來調整圖像的大小&#xff08;縮小和放大&#xff09;&#xff0c;縮小和放大基本上采用圖像重取樣方法 最近鄰內插&#xff0c;這種方法將原圖像中最近鄰的灰度賦給了每個新…

然爸讀書筆記(2014-2)----影響力

第一章&#xff1a;影響力的武器 動物可能會看到某種顏色的羽毛而變得具有攻擊性&#xff0c;或者聽到某種叫聲久對自己的天敵呵護有加。動物的這種愚蠢機械反應在人類身上也有&#xff0c;在某個觸發特征出現時&#xff0c;我們會不假思索的做出相應的反應&#xff0c;之所以會…

pb 如何導出csv_Firefox火狐瀏覽器將提供導出密碼至本地的功能

6月2日&#xff0c;據外媒All About Lifehacks報道&#xff0c;Mozilla官方的bug報告頁面顯示&#xff0c;Firefox瀏覽器的導出或備份密碼請求的問題在前兩天被關閉&#xff0c;并被標記為已解決。據了解&#xff0c;該請求早在多年前就有人提出。如今被標記為已解決&#xff0…

跟著別人的感覺做網絡推廣之二

無意中闖入了站臺網&#xff08;一家歷史很悠久的分類信息網站&#xff0c;印象中比58 趕集 百姓創辦時間還早。&#xff09; 進入后當然看醫療分類了&#xff1a; http://www.zhantai.com/ 站臺網&#xff0c;不是大的省份網民不能位置定位時&#xff0c;默認進入的是北京分站…

iOS - OC 面向對象語法

1、類 1&#xff09;根類&#xff1a;因為類 NSObject 是層次結構的最頂層&#xff0c;因此稱為根類。 可以將類稱為子類&#xff08;subclass&#xff09;和父類&#xff08;superclass&#xff09;&#xff0c;也可以將類稱為子類和超類。2&#xff09;分類&#xff0f;類別&…

第2章 Python 數字圖像處理(DIP) --數字圖像基礎4 -- 像素間的一些基本關系 - 鄰域 - 距離測試

目錄像素間的一些基本關系像素的相鄰像素距離測試import sys import numpy as np import cv2 import matplotlib import matplotlib.pyplot as plt import PIL from PIL import Imageprint(f"Python version: {sys.version}") print(f"Numpy version: {np.__ve…

網頁關閉(解決window.close在火狐下不兼容問題)

熟悉前端的都知道&#xff0c;火狐默認狀態非window.open的頁面window.close是無效的 網上有很多人說&#xff0c;在火狐的地址欄輸入:about:config然后找到dom.allow_scripts_to_close_windows;把false改為true 看著這些人的說法&#xff0c;不得不說我蛋疼了 我做的是網站&am…

iphone備忘錄突然沒了_蘋果突然下架12 天貓:雙11有驚喜!iPhone12 mini配色縮水

點擊“藍字”關注我們蘋果旗艦店突然下架iPhone 12 天貓回應&#xff1a;請期待11.11的驚喜今天&#xff0c;有網友反饋&#xff0c;蘋果天貓旗艦店的iPhone 12和iPhone 12 Pro被下架了。小編查看了下&#xff0c;天貓Apple Store旗艦店確實已經下降了目前在售的 iPhone 12 和 …

CGI小白一些漫想

CGI Common Gateway Interface 一種基于瀏覽器的輸入、在Web服務器上運行的程序方法你創建客戶端的 CGI腳本, 服務器端的程序用來處理用戶輸入, 結果返回給用戶CGI腳本是什么&#xff1f;它是怎樣工作的  CGI腳本是用下列兩種方法使用的: 作為一個表單的ACTION 或 作為一個頁中…

SSH開發中 使用超鏈接到action 其excute方法會被執行兩次 actual row count: 0; expected: 1...

由于執行兩次excute,所以在做刪除操作的時候會出現 Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1 表示找不到要刪除的在控制臺出現的語句是 Hibernate: delete from user where id? Hibernate: delete from user where id?…

第3章 Python 數字圖像處理(DIP) - 灰度變換與空間濾波1 - 灰度變換和空間濾波基礎、Sigmoid激活函數

這里寫目錄標題本節的目標背景灰度變換和空間濾波基礎本節的目標 了解空間域圖像處理的意義&#xff0c;以及它與變換域圖像處理的區別熟悉灰度變換所有的主要技術了解直方圖的意義以及如何操作直方圖來增強圖像了解空間濾波的原理 import sys import numpy as np import cv2…

微軟Edge擴展工具箱旨在將Chrome擴展帶至Edge

微軟Windows 10新工具Edge擴展工具箱旨在讓開發人員可以輕松地將Chrome擴展轉換為微軟Edge擴展。\\微軟Edge擴展工具箱的目標是在少修改或不修改的情況下將Chrome擴展移植到微軟Edge。按照微軟官方的描述&#xff0c;“該工具會創建必要的JSON清單項&#xff0c;架起一座從chro…

absolute 必須 relative_Workfine如何控制身份證號碼必須為18位?

在信息化系統的設計中&#xff0c;由于業務的需要&#xff0c;我們往往需要設置許多控制項&#xff0c;以保證系統能夠按照業務要求流轉&#xff0c;必須出庫數量不能超過庫存&#xff0c;人員信息不能重復錄入&#xff0c;考勤區間不能有交叉等。此篇以實例的方式告訴大家如果…

angularAMD快速入門

ngularAMD是作者 marcoslin 使用 RequireJS &#xff0b; AngularJS開發的前端mvvm框架,因此你可以使用它快速創建一款Web App.他特別適合快速開發SPA應用&#xff0c;適當的和更簡單的方式。 我們整合AngularJS和RequireJS不應該是復雜的&#xff0c;它不是angularAMD。在行動…

ASP.NET MVC5 網站開發實踐(二) Member區域 - 用戶部分(2)用戶登錄、注銷

上次實現了用戶注冊&#xff0c;這次來實現用戶登錄&#xff0c;用到IAuthenticationManager的SignOut、SignIn方法和基于聲明的標識。最后修改用戶注冊代碼實現注冊成功后直接登錄。 目錄&#xff1a; ASP.NET MVC5 網站開發實踐 - 概述 ASP.NET MVC5 網站開發實踐(一) - 項目…

第3章 Python 數字圖像處理(DIP) - 灰度變換與空間濾波2 - 圖像反轉、對數變換

目錄一些基本的灰度變換函數圖像反轉對數變換一些基本的灰度變換函數 如下圖顯示了在圖像處理中頻繁使用的3類基本函數&#xff1a; 線性&#xff08;反轉和恒等變換&#xff09;函數對數&#xff08;對數和反對數變換&#xff09;函數冪律&#xff08;nnn次冪和nnn次根變換&…

為Android應用程序添加社會化分享功能

正在做個android的小應用&#xff0c;有點想嘗試一下社會化分享&#xff0c;比如分享到新浪微博啥的。看一下新浪&#xff0c;人人網的API&#xff0c;說實話功能很全很強大&#xff0c;但雖說有相對的SDK&#xff0c;但是總覺得不方便。因為正在使用友盟的統計SDK&#xff0c;…

安卓手機瀏覽器排行_安卓手機雙11性價比排行發布|拯救者手機發透明版|小米發大光圈手機鏡頭...

智友新聞2020-11-05本期摘要&#xff1a;①安卓手機雙11性價比排行榜發布②聯想拯救者電競手機 Pro 至尊透明版啟動預約③小米發伸縮式大光圈鏡頭概念安卓手機雙11性價比排行榜發布 安兔兔近日發布了安卓手機雙11性價比排行榜。該榜單的統計維度為 2020年10月1日至10月31日。其…