1. 程式人生 > >ibatis配置檔案解析之總體流程

ibatis配置檔案解析之總體流程

     配置檔案解析是使用iBatis的第一步。那麼,ibatis是如何實現其配置檔案解析呢?本文將在較高的抽象層次上講述ibatis配置檔案解析的總體流程。

     一切都從new SqlMapConfigParser().parse(reader);這條語句開始的。這條語句包含了ibatis配置檔案解析的全部內容。這條語句包括兩部分內容:建立sqlMapConfigParser物件和執行器parse方法。下面就分別來講述這兩部分內容究竟做了些什麼工作。

     首先看一下SqlMapConfigParser物件建立時執行了哪些操作。

     第一個操作:建立NodeletParser物件,這個類定義了配置檔案解析的通用模板方法,即如何遍歷配置檔案並進行處理。

     第二個操作:建立XmlParserState物件,這個類的用途暫時可以先不關注。

     第三個操作:執行建構函式。在建構函式中進行了配置檔案的驗證,以及Nodelet的註冊。這裡就會有兩個疑問了,Nodelet是幹什麼的,被註冊到哪裡了。

     先說明一下Nodelet的作用,Nodelet是ibatis節點解析的抽象介面,定義如下:

    一個Nodelet介面的實現類能夠處以一類xml節點。然後就是Nodelet實現類的註冊了,在SqlMapConfigParser類的建構函式中,將SqlMapConfig配置檔案相關的節點的解析類(Nodelet的實現類)註冊到letMap中。這是letMap是一個Map,是NodeletParser的一個屬性,其key為xpath,value為Nodelet實現類的例項。這個註冊後letMap會在xml檔案解析中被使用。

    以上這些操作都是在為配置檔案的解析做準備,接下來就要看ibatis是如何解析配置檔案了。先看SqlMapConfigParser的parse方法,它呼叫了NodeletParser的parse方法,下面看一下具體的實現程式碼:

     以上程式碼即為ibatis解析配置檔案的主要流程了,至於單個節點如何解析和解析後資料儲存在什麼地方在這裡暫不做詳細討論。下面來總結一下ibatis解析配置檔案的大體思路:

     1. 定義了Nodelet介面,可以處理各種型別的xml節點。

     2. 準備工作,註冊Nodelet例項,將xpath和Nodelet例項關聯起來。

     3. 解析,在NodeletParser中,遞迴解析處理配置檔案,根據Node資訊生成xpath,根據xpath取得Nodelet例項,並執行其process方法,從而完成了配置檔案的解析工作。

相關推薦

ibatis配置檔案解析總體流程

     配置檔案解析是使用iBatis的第一步。那麼,ibatis是如何實現其配置檔案解析呢?本文將在較高的抽象層次上講述ibatis配置檔案解析的總體流程。      一切都從new SqlMapConfigParser().parse(reader);這條語句開始的。這

mybatis原始碼配置檔案解析二:解析settings標籤

在前邊的部落格中分析了mybatis解析properties標籤,《mybatis原始碼配置檔案解析之一:解析properties標籤》。下面來看解析settings標籤的過程。 一、概述 在mybatis的核心配置檔案(mybatis-config.xml)檔案中,有關於settings標籤的配置,如下

mybatis原始碼配置檔案解析三:解析typeAliases標籤

在前邊的部落格在分析了mybatis解析settings標籤,《mybatis原始碼配置檔案解析之二:解析settings標籤》。下面來看解析typeAliases標籤的過程。 一、概述 在mybatis核心配置檔案(mybatis-config.xml)中有關typeAliases的配置如下, <t

mybatis原始碼配置檔案解析五:解析mappers標籤(解析XML對映檔案

在上篇文章中分析了mybatis解析<mappers>標籤,《mybatis原始碼配置檔案解析之五:解析mappers標籤 》重點分析瞭如何解析<mappers>標籤中的<package>子標籤的過程。mybatis解析<mappers>標籤主要完成了

mybatis原始碼配置檔案解析五:解析mappers標籤(解析resource和url屬性)

在上篇文章中分析了mybatis解析<mappers>標籤,《mybatis原始碼配置檔案解析之五:解析mappers標籤 》重點分析瞭如何解析<mappers>標籤中的<package>子標籤的過程。mybatis解析<mappers>標籤主要完成了

ibatis原始碼分析—配置檔案解析(1)

一、程式入口 1、目前專案中的ibatis是結合spring一起使用,採用spring的檔案配置。 <bean id="sqlMapClient"class="org.springframework.orm.ibatis.SqlMapClientFactoryB

openstack_icewsgi詳解(paste從ini配置檔案->routesr具體釋出流程

vim /etc/nova/api-paste.ini  其中openstack_compute_api_v2的use = call:nova.api.auth:pipeline_factory表示通過訪問的url,來選擇具體使用哪個應用。 根據http://192.168.1.120:877

nginx1-dns域名解析|nginx入門|win下搭建|配置檔案解析

DNS域名解析器 DNS,域名系統,是網際網路上作為域名和IP地址相互對映的一個分散式資料庫 目的:將域名轉化成ip 過程 ------------------本機------------------ 1.輸入網址(www.163.com) 2.瀏覽器檢查快取中有沒有這個域名

Tomcat配置檔案解析

Tomcat作為一個開源的輕量級web容器,使用非常廣泛; 其配置檔案一般都在 server.xml中配置; server.xml中的每一個元素都對應tomcat的一個元件,位於 tomcat的conf目錄下面 一個完整的 server.xml(tomcat 7) <?xml ve

circos配置檔案解析

歡迎關注微信公眾號《生信修煉手冊》! Circos 的核心就是配置檔案的編寫,在配置檔案中,包含兩個方面的內容: 資料 引數 作為一款視覺化工具,毫無疑問肯定是需要建立在資料的基礎上的。有了資料之後,如何展示,會有許多的引數需要設定和調整,這些引數就是我們需要

JavaEE-SSM:007 Mybatis的配置檔案解析(4)

1.系統級別的typeHandler   2.自定義typeHandler   想要自己實現typeHandler,需要實現TypeHandler<T>介面,T就是你要轉換的Java型別 setParameter(PreparedSta

JavaEE-SSM:006 Mybatis的配置檔案解析(3)

別名主要用於Mapper的xml檔案指定輸入型別或者返回結果型別的名稱的時候,替代全限定名。(前文已經提及如何使用別名)   1.系統級別的typeAlias(類型別名)     2.自定義別名   這裡的alias屬性值得是

JavaEE-SSM:005 Mybatis的配置檔案解析(2)

setting配置不常用,給出配置說明:     本文給出Setting配置的全量程式碼:   <settings> <setting name="cacheEnabled" value="true"

JavaEE-SSM:004 Mybatis的配置檔案解析(1)

1.配置項:不可顛倒順序     2.Properties配置   好處就是:一處配置,多處使用。當然不嫌麻煩,直接配置,不使用property也是可以的。 在Properties下配置相關的配置Property:name是引用的時候的名稱

JavaEE-SSM:009 Mybatis的配置檔案解析(6)

檔案型別轉換器(不常用)   假設資料庫有blob格式的欄位儲存需求: 對應著POJO的byte陣列: ResultMap中有對應的typeHandler配置:   當然,我們可以在POJO中使用InputStream替代byte陣列,但

JavaEE-SSM:008 Mybatis的配置檔案解析(5)

1.系統級列舉typeHandler--EnumOridinalTypeHAndler 資料庫儲存為數字 //建立一個列舉 public enum SexEnum { MALE(1,"男"), FEMALE(0,"女"); private int id;

Spring Boot(17)配置檔案解析

Spring Boot(17)配置檔案解析   前言 上一篇介紹了Spring Boot的入門,知道了Spring Boot使用“習慣優於配置”(專案中存在大量的配置,此外還內建了一個習慣性的配置,讓你無需手動進行配置)的理念讓你的專案快速執行起來。所以,我們要想把Spr

TCP/IP協議學習(二) LWIP使用者自定義配置檔案解析

 LWIP協議支援使用者配置,可以通過使用者裁剪實現最優化配置,LWIP預設包含opts.h作為系統預設配置,不過通過新增lwipopts.h檔案幷包含在opts.h標頭檔案之前就可以對lwip進行使用者裁剪,這裡給出相關引數的含義,不過具體專案還應該根據實際情況裁剪。 #ifn

ehcache配置檔案解析以及記憶體結構

<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation=

C語言面向物件程式設計:配置檔案解析(6)

在實際專案中,經常會把軟體的某些選項寫入配置檔案。 Windows 平臺上的 INI 檔案格式簡單易用,本篇文章利用《C語言面向物件程式設計(五):單鏈表實現》中實現的單鏈表,設計了一個“類” ini_parser 來讀寫 INI 格式的配置檔案。