摘要:將絕對路徑下的資源解釋為相對路徑,給相應(yīng)的類加載定位的資源的實現(xiàn),支持路徑或協(xié)議下的文件用于加載或的路徑資源類的抽象基類。一個實現(xiàn)描述資源但不是一個真實資源的實現(xiàn)。
Spring的配置文件是通過ClassPathResource來進(jìn)行封裝的,在Java中,不同的資源抽象成URL,通過注冊不同的handle來處理不同的URL獲取邏輯,一般的handle類型通過使用不同的前綴來來識別,比如file;http等,可以注冊自己的URLStreamHandle來處理特定的前綴的文件,然而這需要檢查當(dāng)前的資源是否存在等。
對于不同的文件,Spring有不同的實現(xiàn)方式。
比如說,在系統(tǒng)中,我們可以使用
Resource re = new ClassPathResource("bean.xml");
InputStream in = re.getInputStream();得到InputStream的實例之后,就可以使用Resource及其子類提供的方法,進(jìn)行相應(yīng)的功能的開發(fā)了。
ClassPathResource : 類路徑下的資源文件,使用classLoader或class加載資源,
支持文件系統(tǒng)下的資源以類路徑,URL等方式加載資源,但是不支持jar包里面的資源。
ClassRelativeResourceLoader:將絕對路徑下的資源解釋為相對路徑,給相應(yīng)的類加載
UrlResource:URL定位的Resource資源的實現(xiàn),支持URL路徑或protocol協(xié)議下的文件
AbstractFileResolvingResource:用于加載UrlResource或ClassPathResource的路徑
資源類的抽象基類。
DescriptiveResource:一個實現(xiàn)描述資源但不是一個真實資源的URL實現(xiàn)。
FileSystemResource:一個實現(xiàn)文件處理的資源實現(xiàn),支持文件或URL,實現(xiàn)WriteResource接口
ByteArrayResource:一個實現(xiàn)字節(jié)數(shù)組的資源實現(xiàn),為字節(jié)資源創(chuàng)建ByteArrayInputStream
AbstractResource:一個公共的抽象接口類供調(diào)用,這個exists方法用于檢查是否一個文件或
輸入資源是否存在,isOpen總是返回false,toString方法返回描述。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/72310.html
摘要:簡介本篇文章是容器源碼分析系列文章的最后一篇文章,本篇文章所分析的對象是方法,該方法用于對已完成屬性填充的做最后的初始化工作。后置處理器是拓展點之一,通過實現(xiàn)后置處理器接口,我們就可以插手的初始化過程。 1. 簡介 本篇文章是Spring IOC 容器源碼分析系列文章的最后一篇文章,本篇文章所分析的對象是 initializeBean 方法,該方法用于對已完成屬性填充的 bean 做最...
摘要:本文是容器源碼分析系列文章的第一篇文章,將會著重介紹的一些使用方法和特性,為后續(xù)的源碼分析文章做鋪墊。我們可以通過這兩個別名獲取到這個實例,比如下面的測試代碼測試結(jié)果如下本小節(jié),我們來了解一下這個特性。 1. 簡介 Spring 是一個輕量級的企業(yè)級應(yīng)用開發(fā)框架,于 2004 年由 Rod Johnson 發(fā)布了 1.0 版本。經(jīng)過十幾年的迭代,現(xiàn)在的 Spring 框架已經(jīng)非常成熟了...
摘要:在寫完容器源碼分析系列文章中的最后一篇后,沒敢懈怠,趁熱打鐵,花了天時間閱讀了方面的源碼。從今天開始,我將對部分的源碼分析系列文章進(jìn)行更新。全稱是,即面向切面的編程,是一種開發(fā)理念。在中,切面只是一個概念,并沒有一個具體的接口或類與此對應(yīng)。 1. 簡介 前一段時間,我學(xué)習(xí)了 Spring IOC 容器方面的源碼,并寫了數(shù)篇文章對此進(jìn)行講解。在寫完 Spring IOC 容器源碼分析系列...
摘要:源碼分析源碼一覽本節(jié),我們先來看一下填充屬性的方法,即。所有的屬性值是在方法中統(tǒng)一被注入到對象中的。檢測是否存在與相關(guān)的或。這樣可以在很大程度上降低源碼分析的難度。若候選項是非類型,則表明已經(jīng)完成了實例化,此時直接返回即可。 1. 簡介 本篇文章,我們來一起了解一下 Spring 是如何將配置文件中的屬性值填充到 bean 對象中的。我在前面幾篇文章中介紹過 Spring 創(chuàng)建 bea...
摘要:關(guān)于創(chuàng)建實例的過程,我將會分幾篇文章進(jìn)行分析。源碼分析創(chuàng)建實例的入口在正式分析方法前,我們先來看看方法是在哪里被調(diào)用的。時,表明方法不存在,此時拋出異常。該變量用于表示是否提前暴露單例,用于解決循環(huán)依賴。 1. 簡介 在上一篇文章中,我比較詳細(xì)的分析了獲取 bean 的方法,也就是getBean(String)的實現(xiàn)邏輯。對于已實例化好的單例 bean,getBean(String) ...
閱讀 1796·2021-10-18 13:34
閱讀 3983·2021-09-08 10:42
閱讀 1615·2021-09-02 09:56
閱讀 1662·2019-08-30 15:54
閱讀 3202·2019-08-29 18:44
閱讀 3355·2019-08-26 18:37
閱讀 2289·2019-08-26 12:13
閱讀 527·2019-08-26 10:20