spring--源碼分析

Spring的配置文件是經過ClassPathResource來進行封裝的,在Java中,不一樣的資源抽象成URL,經過註冊不一樣的handle來處理不一樣的URL獲取邏輯,通常的handle類型經過使用不一樣的前綴來來識別,好比file;http等,能夠註冊本身的URLStreamHandle來處理特定的前綴的文件,然而這須要檢查當前的資源是否存在等。
對於不一樣的文件,Spring有不一樣的實現方式。數組

clipboard.png

好比說,在系統中,咱們能夠使用
Resource re = new ClassPathResource("bean.xml");
InputStream in = re.getInputStream();獲得InputStream的實例以後,就能夠使用Resource及其子類提供的方法,進行相應的功能的開發了。spa

ClassPathResource : 類路徑下的資源文件,使用classLoader或class加載資源,
支持文件系統下的資源以類路徑,URL等方式加載資源,可是不支持jar包裏面的資源。xml

ClassRelativeResourceLoader:將絕對路徑下的資源解釋爲相對路徑,給相應的類加載接口

UrlResource:URL定位的Resource資源的實現,支持URL路徑或protocol協議下的文件ip

AbstractFileResolvingResource:用於加載UrlResource或ClassPathResource的路徑
資源類的抽象基類。資源

DescriptiveResource:一個實現描述資源但不是一個真實資源的URL實現。開發

FileSystemResource:一個實現文件處理的資源實現,支持文件或URL,實現WriteResource接口get

ByteArrayResource:一個實現字節數組的資源實現,爲字節資源建立ByteArrayInputStreamit

AbstractResource:一個公共的抽象接口類供調用,這個exists方法用於檢查是否一個文件或
輸入資源是否存在,isOpen老是返回false,toString方法返回描述。class

相關文章
相關標籤/搜索