Spring Boot 與 JDBC 核心接口(一)驅動加載

JDBC生命週期?

1.加載驅動

java.sql.Drvier

2.獲取連接

java.sql.DrvierManager

3.獲取表達式

java.sql.Connection

4.執行sql

java.sql.Statement

5.獲取結果集

java.sql.ResultSet

6.關閉連接

java.sql.ResultSet

 

JDBC用到了什麼設計模式?

JDBC通過不斷地返回下一個生命週期類,將繼承關係轉化成了關聯關係,我認爲它是橋接模式的最佳實踐

返回生命週期類這個說法有點抽象,代碼是怎麼實現的呢?

第一步獲取連接時,返回了表達式:

隨後表達式返回java.sql.Statement 執行sql

執行sql後返回java.sql.ResultSet 

如此層層嵌套

最後在java.sql.ResultSet 類中 關閉連接

 

一.驅動接口:java.sql.Drvier 

* The interface that every driver class must implement.
* <P>The Java SQL framework allows for multiple database drivers.
* <P>When a Driver class is loaded, it should create an instance of
* itself and register it with the DriverManager. This means that a
* user can load and register a driver by calling:
* <p>
* {@code Class.forName("foo.bah.Driver")}
* <p>

官方定義驅動接口允許多個數據驅動,具體實現在java.sql.DrvierManager中定義

 

以SpringBoot爲例,我將嘗試尋找它是如何加載驅動:

第一步,找到java.sql.Drvier  按住Ctrl+鼠標左鍵,尋找什麼地方在使用

發現了一個熟悉的東西,Spring的自動配置文件,點進去一看,果然是這裏

Spring Boot 2.2.2 默認連接池爲dbcp2?嗯 看來是這樣。但是我沒有這個依賴呀,當然sourceType的類路徑就無法打開了。但是沒關係,我們全局搜索這個類在哪調用了:

一目瞭然的命名,點進去看看:

Actual DataSource configurations??實際的數據源配置 看來就是這個了 
DataSourceConfiguration 類 有四個方法 對應四個數據源 :
Tomcat Pool DataSource 
Hikari DataSource 
DBCP DataSource
Generic DataSource 

如何使用?

以dbcp爲例,導入maven依賴,在yml中配置即可,

 

JDBC 核心接口(二) 驅動管理 

 

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