spring 原始碼探索 XSD檔案命名空間載入

2021-07-25 10:51:12 字數 2468 閱讀 5213

aop 自定義標籤解析和一般的自定義標籤解析是很相似的。

<?xml version="1.0" encoding="utf-8"?>

xmlns=""

xmlns:xsi=""

xmlns:aop=""

xsi:schemalocation="

/spring-beans-4.2.xsd

/spring-aop-4.2.xsd">

beans>

這個是使用了xsd 文件定義語言,使用 xml schema檔案來驗證xml檔案的內容。dtd也是一種文件定義的形式,已經被xsd替代了,因為後者有更加豐富的資料型別,而且支援xml書寫schema檔案。

使用xml schema文件對xml例項文件進行校驗

命名空間定義:xmlns:namespace-prefix=」namespaceuri

xmlns=""表示xml檔案的預設命名空間,不需要namespace-prefix

xmlns:xsi=""這裡定義了乙個標準的帶xsi字首的命名空間。

xmlns:aop=""

上面的**表示宣告了乙個的namespace,並將其和aop繫結。文件中可以使用

protected document doloaddocument(inputsource inputsource, resource resource) throws exception
在spring-aop.jar下面的meta-inf目錄下,檔案spring.schemas就定義了各個版本的aop網路檔案位址到本地快取的檔案路徑的對映。entityresolver就是通過systemid去載入對應的本地快取檔案

.xsdmeta-info/spring.handlers檔案中

=org.springframework.aop.config.aopnamespacehandler

這個是aop命名空間到handler的對映。在之前的自定義標籤解析的文章中我提到過handler的用法,就是把自定義標籤和解析自定義標籤的parser繫結在一起。

beandefinitionparserdelegate類委託namespacehandlerresolver去載入spring.handlers中定義的所有handler,加入快取,執行init方法。init方法就是完成上面的parse繫結功能。

namespacehandler是定義handler的介面,裡面就乙個parse方法

然後執行這個方法,先呼叫父類namespacehandlersupport的方法,

然後獲取aop相應的parse類,解析aop標籤。

aspectjautoproxybeandefinitionparser 就是其中乙個。

參考:

spring原始碼分析 spring原始碼分析

1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...

react原始碼探索

react核心部分為 1 虛擬dom物件 reactdom.render args,element 這個方法第乙個引數接收三種形式的內容的 第一種 字串 第二種 由createclass建立的物件,使用createelement處理 第三種 直接有createelement建立的物件 這些還未呼叫r...

MyBatis原始碼探索

每個基於 mybatis 的應用都是以乙個 sqlsessionfactory 的例項為中心的。sqlsessionfactory 的例項可以通過 sqlsessionfactorybuilder 獲得。而 sqlsessionfactorybuilder 則可以從 xml mybatis conf...