SpringBoot:關於默認連接池Hikari的源碼剖析


1.起因

因為這兩天在給公司的一個項目升級SpringBoot版本,遇到了一些坑,升級項目版本:SpringBoot1.5.x到SpringBoot2.0.x

今天早上雙庫操作遇到一個問題:jdbcUrl is required with driverClassName

在網上查詢了一下將url改為jdbc-url就可以了。

解決后,閑來無事,准備一探究竟。

2.url改為jdbc-url的原因

SpringBoot2.0默認使用了Hikari作為連接池

於是我們先找到Hikari連接池的包

點開它的配置項:HikariConfig,搜索jdbcUrl,然后找到原因:

這里原因就找到了,Hikari沒有url屬性,與之對應的是jdbc-url屬性

因此我們使用url時會導致:jdbcUrl is required with driverClassName(jdbcUrl沒有傳入)

3.SpringBoot2.0在哪里指定的默認連接池

我們首先先創建一個連接池

這里的DataSourceBuilder是

提供的,於是我們點擊進去看看這個類

 這里默認提供支持的數據庫連接池有三種,那么SpringBoot實在哪里默認選擇的呢?

 我們繼續看這個類

在build方法這里,有一個getType()方法,大概就在這里指定的類型吧

這里的意思就是,如果指定了連接池類型就是用當前類型,沒有指定的話,就加載默認的連接池屬性

於是我們再看findType方法

這里就是從DATA_SOURCE_TYPE_NAMES 里面加載連接池類型,默認從下標為0的加載

private static final String[] DATA_SOURCE_TYPE_NAMES = new String[]{"com.zaxxer.hikari.HikariDataSource", "org.apache.tomcat.jdbc.pool.DataSource", "org.apache.commons.dbcp2.BasicDataSource"};

 於是默認的就為Hikari連接池

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM