Spring Boot 2.x HikariCP使用詳解


此文轉載至:http://www.leftso.com/blog/520.html

一、導語

    本文將介紹Spring Boot和HikariCP示例。

HikariCP是快速,簡單,可靠和生產就緒的JDBC連接池。在Spring Boot 2.0版本中,默認數據庫池技術已從Tomcat Pool切換到HikariCP。

這是因為HikariCP提供了卓越的性能。現在自Spring Boot 2.0發布以來,spring-boot-starter-jdbc和spring-boot-starter-data-jpa默認解析HikariCP依賴,

spring.datasource.type屬性將HikariDataSource作為默認值。Spring引導首先選擇HikariCP然后是Tomcat池,

然后根據可用性選擇Commons DBCP2。在這個頁面上,我們將提供帶有Spring Boot Data和MySQL的HikariCP的完整示例。

我們將創建一個演示應用程序,我們將在其中執行數據庫中的創建和讀取操作。我們將配置HikariCP屬性,例如文件中的connectionTimeout,minimumIdle,maximumPoolSize,idleTimeout,maxLifetime和autoCommit 。

二、使用的技術

找到我們示例中使用的技術。 
1. Java 9 
2. Spring 5.0.7.RELEASE 
3. Spring Boot 2.0.3.RELEASE 
4. Maven 3.5.2 
5. MySQL 5.5 

6.IDEA

三、HikariCP依賴

在使用HikariCP之前,我們需要確保已經解決了HikariCP依賴關系。如果我們使用Maven,我們可以使用以下依賴項。

<dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>3.1.0</version> </dependency>

如果我們使用的是Spring Boot 2.0或者之后的版本,我們不需要去單獨在pom.xml文件中引入HikariCP依賴。因為默認情況下spring-boot-starter-jdbc 或者 spring-boot-starter-data-jpa 會依賴進來。這意味着我們是否也在使用依賴項

 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <version>2.0.3.RELEASE</version> </dependency> 

或者

 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>2.0.3.RELEASE</version> </dependency> 

然后我們不需要在我們的pom.xml或build.gradle中包含HikariCP依賴項。

四、HikariCP配置

對於Hikari連接池配置,我們通過使用spring.datasource.type並在application.properties文件中為其分配連接池實現的完全限定名稱來啟用它,如下所示。

 spring.datasource.type = com.zaxxer.hikari.HikariDataSource 

如果我們使用的是Spring Boot 2.0及以上版本,Spring Boot會HikariDataSource默認選擇,我們不需要配置上面的行。 
現在要配置Hikari特定的連接池設置,Spring Boot提供了spring.datasource.hikari.*application.properties文件中使用的前綴。我們將在這里討論一些常用的配置。 
1. connectionTimeout
connectionTimeout是客戶端等待連接池連接的最大毫秒數。我們需要將其配置如下。

 spring.datasource.hikari.connection-timeout=20000 

2. minimumIdle
minimumIdle是HikariCP在連接池中維護的最小空閑連接數。它配置如下。

 spring.datasource.hikari.minimum-idle=5 

3. maximumPoolSize
maximumPoolSize配置最大池大小。它配置如下。

 spring.datasource.hikari.maximum-pool-size=12 

4. idleTimeout
idleTimeout是允許連接在連接池中空閑的最長時間(以毫秒為單位)。它配置如下。

 spring.datasource.hikari.idle-timeout=300000 

5. maxLifetime
maxLifetime是池中連接關閉后的最長生命周期(以毫秒為單位)。它配置如下。

 spring.datasource.hikari.max-lifetime=1200000 

使用中的連接永遠不會退役,只有當它關閉時才會在最長生命周期后刪除。 
6. autoCommit
autoCommit配置從池返回的連接的默認自動提交行為。默認值為true。

 spring.datasource.hikari.auto-commit=true 


配置示例:

  application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/concretepage spring.datasource.username=root spring.datasource.password=cp #Spring Boot 2.0 includes HikariDataSource by default #spring.datasource.type = com.zaxxer.hikari.HikariDataSource spring.datasource.hikari.connection-timeout=20000 spring.datasource.hikari.minimum-idle=5 spring.datasource.hikari.maximum-pool-size=12 spring.datasource.hikari.idle-timeout=300000 spring.datasource.hikari.max-lifetime=1200000 spring.datasource.hikari.auto-commit=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect spring.jpa.properties.hibernate.id.new_generator_mappings=false spring.jpa.properties.hibernate.format_sql=true

補充yml配置:
# 數據源
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/dbtrial?useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.jdbc.Driver
hikari:
# 連接池最大連接數
maximum-pool-size: 12
# 空閑時保持最小連接數
minimum-idle: 5
# 空閑連接存活時間
idle-timeout: 300000
# 連接超時時間
connection-timeout: 20000
# 測試sql
connection-test-query: select 1


 


免責聲明!

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



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