MyBatis原始碼解析之資料來源(含資料庫連線池簡析)
一.概述:
常見的資料來源元件都實現了javax.sql.DataSource介面;
MyBatis不但要能整合第三方的資料來源元件,自身也提供了資料來源的實現;
一般情況下,資料來源的初始化過程引數較多,比較複雜;
二.設計模式:
為什麼要使用工廠模式
資料來源模組類圖 :
三.MyBatis原始碼資料來源實現
資料結構如下:
使用動態代理封裝了真正的資料庫連線物件,進行了方法增強:使用前檢查連線是否有效,關閉時對連線進行回收;
連線池配置檔案配置的資料在這裡對映。
用於管理PooledConnection物件狀態的元件,通過兩個list分別 管理空閒狀態的連線資源和活躍狀態的連線資源;
演算法流程圖:
獲取連線:
釋放連線:
從連線池獲取連線
釋放連線:
相關推薦
MyBatis原始碼解析之資料來源(含資料庫連線池簡析)
一.概述: 常見的資料來源元件都實現了javax.sql.DataSource介面; MyBatis不但要能整合第三方的資料來源元件,自身也提供了資料來源的實現; 一般情況下,資料來源的初始化過程引數較多,比較複雜; 二.設計模式: 為什麼要使用工廠模式 資料來
MyBatis源碼解析之數據源(含數據庫連接池簡析)
概述 myba 源碼 conn java 初始 對象狀態 lis 為什麽 一.概述: 常見的數據源組件都實現了javax.sql.DataSource接口; MyBatis不但要能集成第三方的數據源組件,自身也提供了數據源的實現; 一般情況下,數據源的初始化過程參數較多,比
mybatis原始碼-解析配置檔案(三)之配置檔案Configuration解析(超詳細, 值得收藏)
1. 簡介 1.1 系列內容 本系列文章講解的是mybatis解析配置檔案內部的邏輯, 即 Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); SqlSessionFact
mybatis原始碼-解析配置檔案(二)之解析的流程
1. 簡介 在之前的文章《mybatis 初步使用(IDEA的Maven專案, 超詳細)》中, 講解了mybatis的初步使用, 並總結了以下mybatis的執行流程: 通過 Resources 工具類讀取 mybatis-config.xml,
mybatis原始碼-解析配置檔案(四)之配置檔案Mapper解析
其中, mappers作為configuration節點的一部分配置, 在本文章中, 我們講解解析mappers節點, 即 xxxMapper.xml 檔案的解析。 1 解析入口 在解析 mybatis-config.xml 時, 會進行解析 xxxMapper.xml 的檔案。 在圖示流程的 XMLCo
mybatis原始碼-解析配置檔案(四-1)之配置檔案Mapper解析(cache)
1. 簡介 本文章主要講解的是, xxxMapper.xml 檔案中, cache 節點的原始碼。 2. 解析 XMLMapperBuilder.cacheElement() 方法主要負責解析 <cache> private void cacheElement(XNode context)
mybatis原始碼解析之Configuration載入(一)
概要 上一篇,我們主要搭建了一個簡單的環境,這邊我們主要來分析下mybatis是如何來載入它的配置檔案Configuration.xml的。 分析 1 public class App { 2 public static void main(String[] args) { 3
mybatis原始碼解析之Configuration載入(二)
概述 上一篇我們講了configuation.xml中幾個標籤的解析,例如<properties>,<typeAlises>,<settings>等,今天我們來介紹剩下的兩個比較重要的標籤之一,<environments>,這個標籤主要用於我們訪問資料庫的配置
MyBatis原始碼解析之日誌記錄
一 .概述 MyBatis沒有提供日誌的實現類,需要接入第三方的日誌元件,但第三方日誌元件都有各自的Log級別,且各不相同,但MyBatis統一提供了trace、debug、warn、error四個級別; 自動掃描日誌實現,並且第三方日誌外掛載入優先順序如下:slf4J → commonsLoging →
Mybatis原始碼解析之Mybatis初始化過程
一、搭建一個簡單的Mybatis工程 為了瞭解Mybatis的初始化過程,這裡需要搭建一個簡單的Mybatis工程操作資料庫,工程結構如下: 一個UserBean.java private int id; private String user
Spring原始碼解析之四(容器的功能擴充套件)
容器的功能擴充套件 1、概述 之前的文章中BeanFactory介面以及它的預設實現類XmlBeanFactory為例進行分析,但是Spring中還提供了另一個介面ApplicationContext,用於擴充套件BeanFactory中現有的功能。 ApplicationCon
Spring原始碼解析之四(bean載入)
1、概述 已經分析了spring對於xml配置檔案的解析,接下來就是對bean的載入。 getBean的實現 public <T> T getBean(String name, Class<T> requiredType, Object... args) thro
Spring原始碼解析之三(自定義標籤的解析)
自定義標籤的解析 1、概述:通過前面的文章我們分析了預設標籤的解析,我們先回顧下自定義標籤解析所使用的方法 /** * Parse the elements at the root level in the document: * "import", "alias", "bean".
Spring原始碼解析之二(預設標籤的解析)
預設標籤解析 概述:本節重點詳細分析預設標籤的解析過程。接上一篇文章講到parseBeanDefinitions(root, delegate); /** * Parse the elements at the root level in the document: * "impor
mybatis 原始碼解析之 session
介紹 該部分程式碼位於 org.apache.ibatis.session 包。覆蓋了由讀取配置之後,到建立一個 SqlSession 的過程。 簡化流程 SqlSessionManager 根據 Reader、InputStream 用 SqlSessionFactoryB
# Mybatis原始碼解析之配置載入(二)
Mybatis原始碼解析之配置載入(二) 這一篇是承接上一篇文章Mybatis原始碼解析之配置載入(一),上一篇原本是想把整個配置載入都分析完全,然後發現內容還是比較多,所以決定分成兩篇來說好了,現在就開始剩下的配置分析。 配置載入 繼續回到parseConfigura
Mybatis原始碼解析之配置載入(一)
Mybatis原始碼解析之配置載入(一) 用了好幾年的mybatis了,但是很少來鑽研mybatis原理所在,最近抽出空來,就把這一整套原始碼都研究了下,然後發現就是這些東西,mybatis沒啥難度,於是決定把研究的這一整套寫一個mybatis系列,記錄一下,在這些完了以後,順便寫一
Mybatis原始碼解析之寫流程
閱讀須知 Mybatis原始碼版本:3.4.4 註釋規則: //單行註釋做普通註釋 /**/多行註釋做深入分析 建議配合Mybatis原始碼閱讀 正文 承接上文,我們繼續來分析寫操作: DefaultSqlSession: public i
Dubbo原始碼解析之SPI(一):擴充套件類的載入過程
Dubbo是一款開源的、高效能且輕量級的Java RPC框架,它提供了三大核心能力:面向介面的遠端方法呼叫、智慧容錯和負載均衡,以及服務自動註冊和發現。 Dubbo最早是阿里公司內部的RPC框架,於 2011 年開源,之後迅速成為國內該類開源專案的佼佼者,2018年2月,通過投票正式成為 Apache基金會孵
myBatis原始碼解析-日誌篇(1)
上半年在進行知識儲備,下半年爭取寫一點好的部落格來記錄自己原始碼之路。在學習原始碼的路上也掌握了一些設計模式,可所謂一舉兩得。本次打算寫Mybatis的原始碼解讀。 準備工作 1. 下載mybatis原始碼 下載地址:https://github.com/mybatis/mybatis-3 2.