Spring?Boot?快速使用?HikariCP?連接池配置詳解
Spring Boot 使用 HikariCP 連接池配置詳解
HikariCP 是一個高性能的 JDBC 連接池組件。
Spring Boot 2.x 將其作為默認(rèn)的連接池組件,項目中添加 spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa 模塊后,HikariCP 依賴會被自動引入。
快速使用
1)在你的 Spring Boot 項目中添加依賴配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>注意:以下常用的 ORM 組件中已經(jīng)包含了 JDBC 依賴,不需要重復(fù)引入:
- spring-boot-starter-data-jpa
- mybatis-spring-boot-starter
- mybatis-plus-boot-starter
2)添加數(shù)據(jù)源配置:
## Spring HikaraDataSource Configuration # spring.datasource.type=com.zaxxer.hikari.HikariDataSource # spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # spring.datasource.name=HikariCP-1 spring.datasource.url=jdbc:mysql://localhost:3306/dbname?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull spring.datasource.username=root spring.datasource.password=123456 spring.datasource.hikari.connection-timeout=30000 spring.datasource.hikari.idle-timeout=600000 spring.datasource.hikari.max-lifetime=1800000 spring.datasource.hikari.maximum-pool-size=100 spring.datasource.hikari.minimum-idle=10 spring.datasource.hikari.pool-name=HikaraPool-1
連接池配置詳解
1)在 Spring Boot 項目中,一個簡單的 Spring DataSource 配置,通常只需要設(shè)置數(shù)據(jù)庫連接、用戶名和密碼三個參數(shù)。
## Spring DataSourceProperties # 設(shè)置連接池類型,默認(rèn)自動獲?。蛇x) spring.datasource.type=com.zaxxer.hikari.HikariDataSource # 設(shè)置數(shù)據(jù)庫驅(qū)動,默認(rèn)自動獲?。蛇x) spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 生成唯一的數(shù)據(jù)源名稱,設(shè)置與否,都會優(yōu)先取 name 的值(可選) spring.datasource.generate-unique-name=true # 設(shè)置數(shù)據(jù)源名稱,默認(rèn)會生成唯一的數(shù)據(jù)源名稱,如:HikariPool-1(可選) spring.datasource.name=HikariCP-1 # 設(shè)置數(shù)據(jù)庫連接(必選) spring.datasource.url=jdbc:mysql://localhost:3306/dbname?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull # 設(shè)置數(shù)據(jù)庫用戶名(必選) spring.datasource.username=root # 設(shè)置數(shù)據(jù)庫密碼(必選) spring.datasource.password=123456
2)在 Spring Boot 項目中, Spring DataSource 會使用默認(rèn)的配置啟用 HikaraCP 數(shù)據(jù)庫連接池。我們也可以通過屬性文件來優(yōu)化 HikariCP 的配置項,尤其是連接池大小的設(shè)置。
## Spring HikariConfig # 事務(wù)自動提交 - 默認(rèn)值:true spring.datasource.hikari.auto-commit=true # 連接測試查詢 - Using the JDBC4 <code>Connection.isValid()</code> method to test connection validity can be more efficient on some databases and is recommended. # 如果你的驅(qū)動程序支持JDBC4,強(qiáng)烈建議不要設(shè)置此屬性。 spring.datasource.hikari.connection-test-query=select 1 # 連接超時時間 - 默認(rèn)值:30秒。 spring.datasource.hikari.connection-timeout=30000 # 連接池中允許閑置的最長時間 - 默認(rèn)值:10分鐘 spring.datasource.hikari.idle-timeout=600000 # 一個連接生命時長(毫秒),超時而沒被使用則被釋放 - 默認(rèn)值:30分鐘 spring.datasource.hikari.max-lifetime=1800000 # 連接池中允許的最大連接數(shù),包括閑置和使用中的連接 - 默認(rèn)值:10 spring.datasource.hikari.maximum-pool-size=100 # 連接池中允許的最小空閑連接數(shù) - 默認(rèn)值:10。 spring.datasource.hikari.minimum-idle=10 # 連接被測試活動的最長時間 - 默認(rèn)值:5秒。 spring.datasource.hikari.validation-timeout=5000 # 指定連接池的名稱 - 默認(rèn)自動生成 spring.datasource.hikari.pool-name=HikaraPool-1
多數(shù)據(jù)源配置
1)添加多數(shù)據(jù)源配置:
## Spring HikaraDataSource Configuration # spring.datasource.one.driver-class-name=com.mysql.cj.jdbc.Driver # spring.datasource.one.name=HikariCP-1 spring.datasource.one.url=jdbc:mysql://localhost:3306/kaddo-sit?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull spring.datasource.one.username=root spring.datasource.one.password=123456 spring.datasource.one.hikari.connection-timeout=30000 spring.datasource.one.hikari.idle-timeout=600000 spring.datasource.one.hikari.max-lifetime=1800000 spring.datasource.one.hikari.maximum-pool-size=100 spring.datasource.one.hikari.minimum-idle=10 spring.datasource.one.hikari.pool-name=HikaraPool-1 ## Spring HikaraDataSource Configuration # spring.datasource.two.driver-class-name=com.mysql.cj.jdbc.Driver # spring.datasource.two.name=HikariCP-2 spring.datasource.two.url=jdbc:mysql://localhost:3306/kaddo-uat?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull spring.datasource.two.username=root spring.datasource.two.password=123456 spring.datasource.two.hikari.connection-timeout=30000 spring.datasource.two.hikari.idle-timeout=600000 spring.datasource.two.hikari.max-lifetime=1800000 spring.datasource.two.hikari.maximum-pool-size=100 spring.datasource.two.hikari.minimum-idle=10 spring.datasource.two.hikari.pool-name=HikaraPool-2
2)創(chuàng)建多數(shù)據(jù)源:
@Bean
@Primary
@ConfigurationProperties("spring.datasource.one")
public DataSourceProperties dataSourcePropertiesOne() {
return new DataSourceProperties();
}
@Bean
@Primary
@ConfigurationProperties("spring.datasource.one.hikari")
public HikariDataSource dataSourceOne(DataSourceProperties properties) {
return createHikariDataSource(properties);
}
@Bean
@ConfigurationProperties("spring.datasource.two")
public DataSourceProperties dataSourcePropertiesTwo() {
return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("spring.datasource.two.hikari")
public HikariDataSource dataSourceTwo(@Qualifier("dataSourcePropertiesTwo") DataSourceProperties properties) {
return createHikariDataSource(properties);
}
@SuppressWarnings("unchecked")
private static <T> T createHikariDataSource(DataSourceProperties properties, Class<? extends DataSource> type) {
return (T) properties.initializeDataSourceBuilder().type(type).build();
}
/**
* 創(chuàng)建 HikariDataSource 數(shù)據(jù)源
*
* @param properties 參數(shù)
* @return 數(shù)據(jù)源
*/
private static HikariDataSource createHikariDataSource(DataSourceProperties properties) {
HikariDataSource dataSource = createHikariDataSource(properties, HikariDataSource.class);
if (StringUtils.hasText(properties.getName())) {
dataSource.setPoolName(properties.getName());
}
return dataSource;
}3)使用多數(shù)據(jù)源:
@Autowired
private HikariDataSource dataSourceOne;
@Autowired
@Qualifier("dataSourceTwo")
private HikariDataSource dataSourceTwo;配置多數(shù)據(jù)源的注意事項:
- 配置多數(shù)據(jù)源時,最好通過 @Primary 指定默認(rèn)數(shù)據(jù)源。
- 創(chuàng)建數(shù)據(jù)源對象時,建議使用 HikariDataSource 代替 DataSource。
- 創(chuàng)建數(shù)據(jù)源對象時,注意通過 @Qualifier(“dataSourcePropertiesTwo”) 來指定數(shù)據(jù)源的配置屬性對象。
- 創(chuàng)建數(shù)據(jù)源對象時,注意創(chuàng)建 Bean 的方法名,最好通過 @Bean(“dataSourceOne”) 來指定數(shù)據(jù)源對象的名稱。
- 多數(shù)據(jù)源通常結(jié)合 ORM 框架一起使用,具體可參考 Kaddo 框架的 ORM 配置。
到此這篇關(guān)于Spring Boot 使用 HikariCP 連接池配置詳解的文章就介紹到這了,更多相關(guān)Spring Boot 使用 HikariCP 連接池內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot2學(xué)習(xí)世界著名程序springboot開發(fā)體驗
這篇文章主要為大家介紹了世界著名程序springboot開發(fā)體驗,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
使用Java實現(xiàn)將Excel工作表轉(zhuǎn)換為CSV格式
在日常開發(fā)中,Excel 文件(.xls/.xlsx)是數(shù)據(jù)存儲和交換的常用格式,本文將介紹如何使用 Spire.XLS for Java 組件,高效實現(xiàn) Excel 文件到 CSV 格式的轉(zhuǎn)換,需要的可以了解下2025-10-10
使用google.kaptcha來生成圖片驗證碼的實現(xiàn)方法
這篇文章主要介紹了使用google.kaptcha來生成圖片驗證碼的實現(xiàn)方法,非常不錯具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09
JAVA實現(xiàn)空間索引編碼——GeoHash的示例
本篇文章主要介紹了JAVA實現(xiàn)空間索引編碼——GeoHash的示例,如何從眾多的位置信息中查找到離自己最近的位置,有興趣的朋友可以了解一下2016-10-10
SpringBoot中@ConditionalOnBean注解的具體使用
本文主要介紹了SpringBoot中@ConditionalOnBean注解的具體使用,用于根據(jù)是否存在指定Bean動態(tài)注冊Bean,支持類型、名稱、注解及搜索范圍控制,常見于按需加載、自動配置和可選依賴場景,與@ConditionalOnMissingBean形成條件對立2025-06-06

