ibatis配置文件解析之XmlParserState

     在ibatis配置文件解析總體流程一文中主要介紹了配置文件的大體過程,主要分爲兩個部分:一是註冊xml節點解析算法,二是遍歷配置文件,根據已註冊的節點解析算法執行解析。

     那麼,配置文件中的各個節點是如何解析的呢?解析後得到的數據去向又是如何呢?應用程序又是如何使用這些配置信息呢?本文暫不對節點解析做詳細的套路,也不討論應用程序如何使用這些配置,主要關注配置信息的流向,即配置文件的解析類和配置信息的使用類是如何協調工作的。

    在iBatis中,協調配置文件解析類和配置文件使用類的工作是由XmlParserState負責的,它接收由解析類解析得到的配置信息,然後再將這些信息創建成爲相應的配置信息類轉發給應用程序的配置信息使用類。下面就來看一下和XmlParserState有關聯關係的類有哪些。

XmlParserState關係圖

    從上述的關係圖中可以得知,XmlParserState是信息交流的樞紐,解析類將得到的數據發送給XmlParserState,然後XmlParserState再將其發送給配置類,配置類發送給應用類。

    XmlParserState與Parser之間的關係:在整個應用中,只有一個XmlParserState對象,Parser持有這個對象引用,並將這個引用傳遞給Nodelet實例。Nodelet實例得到XmlParserState實例的引用後,在執行解析的時候,將解析結果放入到XmlparserState實例中。同時,也可能通過XmlParserState實例來取得Config實例的引用,將相關信息發送給Config類。個人覺得在Nodelet中直接操作Config對象這種做法有些不妥,應該通過XmlParserState來操作Config對象,這樣更能體現XmlParserState的中介者的作用了,也消除了Parser與Config之間的耦合。

    XmlParserState與Config類之間的關係:在XmlParserState類中,持有各個Config實例的引用,其中SqlMapConfiuration是由XmlParserState創建的,其他的Config是Parser通過SqlMapConfiguration創建的,然後將創建的對象賦值給XmlParserState。

    通過上述的講解,iBatis配置文件解析中,配置信息的傳遞情況已經很明確了,Parser與Config通過XmlParserState關聯在一起,XmlParserState作爲一個協調者的角色,輔助Parser和Config工作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章