簡介
SpringBoot2.0 之後使用 HikariCP 連接池更加方便了,因爲 SB2.0 之後, HikariCP 連接池代替了 Tomcat 連接池已經成爲了 SB2.0 的默認連接池。Springboot 2.0選擇HikariCP作爲默認數據庫連接池的五大理由 ,springboot
默認依賴中集成了HikariCP,所以不用在引入Hikari的相關依賴了。下面開始正題。
環境
- Maven
- JDK 8+
- SpringBoot 2.0.+
相關依賴
因爲spring boot 2.0使用hikariCP作爲默認連接池,所以hikariCP的依賴已經默認集成了,我們不需要另外引入hikariCP相關的依賴,這裏只是引入了Mysql的依賴
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
相關配置
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull
username: root
password: root
type: com.zaxxer.hikari.HikariDataSource
hikari:
minimum-idle: 5
maximum-pool-size: 15
auto-commit: true
idle-timeout: 30000
pool-name: DataPoolHikari
max-lifetime: 180000
connection-timeout: 30000
connection-test-query: SELECT 1
enjoy coding!
詳細配置信息
必須配置
Spring boot配置項 (前綴:spring.datasource.) |
描述 |
默認值 |
對應配置項 |
url |
數據庫url連接信息 |
none |
jdbcUrl |
username |
用戶名 |
none |
username |
password |
密碼 |
none |
password |
常用配置
Spring boot配置項 (前綴:spring.datasource.hikari.) |
描述 |
默認值(ms毫秒,s秒,min分鐘) |
對應配置項 |
auto-commit |
自動提交從池中返回的連接 |
true |
autoCommit |
connection-timeout |
從池中獲取連接等待的最大時間,超出時間仍無可用連接,拋出SQLException |
30000ms(30s),最小設置爲250毫秒 |
connectionTimeout |
idle-timeout |
連接在池中空閒的最長時間,minimumIdle 小於maximumPoolSize 時有效,值爲0時表示始終不刪除空閒連接 |
600000ms(10min),最小設置爲10000ms(10s) |
idleTimeout |
max-lifetime |
池中連接的最長生命週期,值0表示沒有最大生命週期(無限生命週期) |
1800000ms(30min) |
maxLifetime |
jdbc4-connection-test |
如果驅動程序支持JDBC4,強烈建議不要設置此屬性 |
none |
connectionTestQuery |
minimum-idle |
池中維護的最小空閒連接數,如果池中空閒連接數小於minimum-idle ,並且小於maximumPoolSize ,HikariCP會創建新的空閒連接,建議不設置 |
等於maximumPoolSize |
minimumIdle |
maximum-pool-size |
池中的最大連接數,包括正在使用和空閒的連接數,建議根據後端數據庫進行具體設置 |
10個 |
maximumPoolSize |
metric-registry |
記錄各種度量標準 |
none |
metricRegistry |
health-check-registry |
報告當前的健康信息 |
none |
healthCheckRegistry |
pool-name |
連接池的名稱,主要出現在日誌記錄和JMX管理控制檯中,以標識池和池配置。 |
自動生成 |
poolName |
不常用配置
Spring boot配置項 (前綴:spring.datasource.hikari.) |
描述 |
默認值(ms毫秒,s秒,min分鐘) |
對應配置項 |
initialization-fail-timeout |
如果池無法成功初始化連接,則此屬性控制池是否“快速失敗”的時間,在此超時發生之前無法獲取連接,則將引發異常 |
1ms |
initializationFailTimeout |
isolate-internal-queries |
確定HikariCP 是否在其自己的事務中隔離內部池查詢,此屬性僅在禁用autoCommit 時適用 |
false |
isolateInternalQueries |
allow-pool-suspension |
池是否可以通過JMX掛起和恢復 |
false |
allowPoolSuspension |
read-only |
從池中獲取的Connections是否處於只讀模式 |
false |
readOnly |
register-mbeans |
是否註冊JMX管理Bean |
false |
registerMbeans |
catalog |
設置支持catalog 概念的數據庫的缺省catalog 。如果未指定此屬性,則使用JDBC 驅動程序定義的缺省catalog 。 |
driver default |
catalog |
connection-init-sql |
設置一個SQL語句,該語句將在每次創建新連接之後,添加到池中之前執行 |
none |
connectionInitSql |
driver-class-name |
數據庫驅動配置,HikariCP將嘗試僅基於jdbcUrl通過DriverManager解析驅動程序,除非您收到明顯的錯誤消息,指出未找到驅動程序,否則請忽略此屬性。 |
none |
driverClassName |
transaction-isolation |
從池返回的連接的默認事務隔離級別。 |
driver default |
transactionIsolation |
validation-timeout |
連接將被測試活動的最長時間,最小設置爲250ms |
5000ms(5s) |
validationTimeout |
leak-detection-threshold |
記錄消息之前連接可能離開池的時間量,表示可能的連接泄漏,0表示禁止泄漏檢測,啓用泄漏檢測的最低可接受值是2000ms(2秒) |
0 |
leakDetectionThreshold |
|
允許您直接設置要由池包裝的DataSource 實例,而不是讓HikariCP通過反射構造它。 |
none |
dataSource |
schema |
該屬性爲支持模式概念的數據庫設置默認模式 |
driver default |
schema |
|
此屬性允許您設置將用於創建池使用的所有線程的java.util.concurrent.ThreadFactory 的實例。 |
none |
threadFactory |
scheduled-executor |
此屬性允許您設置將用於各種內部計劃任務的java.util.concurrent.ScheduledExecutorService 實例 |
none |
scheduledExecutor |
參考