Spring Boot HikariCP 使用

簡介

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 連接池配置
    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

參考

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