此文轉載至: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. connectionTimeoutconnectionTimeout
是客戶端等待連接池連接的最大毫秒數。我們需要將其配置如下。
spring.datasource.hikari.connection-timeout=20000
2. minimumIdleminimumIdle
是HikariCP在連接池中維護的最小空閑連接數。它配置如下。
spring.datasource.hikari.minimum-idle=5
3. maximumPoolSizemaximumPoolSize
配置最大池大小。它配置如下。
spring.datasource.hikari.maximum-pool-size=12
4. idleTimeoutidleTimeout
是允許連接在連接池中空閑的最長時間(以毫秒為單位)。它配置如下。
spring.datasource.hikari.idle-timeout=300000
5. maxLifetimemaxLifetime
是池中連接關閉后的最長生命周期(以毫秒為單位)。它配置如下。
spring.datasource.hikari.max-lifetime=1200000
使用中的連接永遠不會退役,只有當它關閉時才會在最長生命周期后刪除。
6. autoCommitautoCommit
配置從池返回的連接的默認自動提交行為。默認值為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