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