mybatis源碼閱讀第一天

源碼閱讀三要素

  1. 先讀文檔,在讀代碼,找到入口,帶着目的讀(我的目的是瞭解設計模式、編碼風格、總體規劃、分包分類等)
  2. 梳理整體結構,畫圖加深記憶,先不要鑽細節
  3. 不要全讀,60%左右就夠了

mybatis全局配置文件

瞭解都有哪些屬性,屬性有什麼優先級,屬性含義,(官方文檔說的注意的點,在讀源碼時的判斷邏輯就會這樣編寫),這點很重要,摘自官方文檔如下:
鏈接:mybatis官方文檔鏈接
configuration(配置)
properties(屬性)
settings(設置)
typeAliases(類型別名)
typeHandlers(類型處理器)
objectFactory(對象工廠)
plugins(插件)
environments(環境配置)
environment(環境變量)
transactionManager(事務管理器)
dataSource(數據源)
databaseIdProvider(數據庫廠商標識)
mappers(映射器)

mybatis初始化

代碼如下:

		String file = "mybatis-config.xml";
        Reader resources = Resources.getResourceAsReader(file);

//        Environment environment = new Environment.Builder("development").build();
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resources,"development");

mybatis最核心的類是SqlSession,SqlSession是由SqlSessionFactory創建的,而SqlSessionFactory是由SqlSessionFactoryBuilder創建的,構建SqlSessionFactory使用了構建者模式,構建者模式是根據參數不同會創建不一樣的對象,而SqlSessionFactory是工廠模式,會創建統一的對象,也就是一個模子出來的。
創建SqlSessionFactoryBuilder對象的時候,會發現裏面使用了XMLConfigBuilder對象,XMLConfigBuilder對象通過XPathParser來解析配置文件,而XMLConfigBuilder對象裏面有一個Configuration對象,這是初始化時最核心的一個對象,所有的配置屬性以及相關策略都是在這個對象裏面,那麼接下來看是如何創建這個對象的。

Configuration初始化

直接上圖:
初始化邏輯基本在這裏了

sqlSessionFactory會話創建總圖

sqlSessionFactory

SqlSessionFactory初始化

SqlSessionFactory初始化

遇到的問題

發現初始化時,大量使用了反射,so,先學會反射,能夠更好的理解源碼了……

下一步是查看解析註冊Mapper的源碼。

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