springboot配置HikariDataSource连接池的两种方法

 更新时间:2026年01月21日 09:13:56   作者:遇晚风  
本文介绍了在Spring Boot中配置HikariDataSource连接池的两种方式,通过application.yml或application.properties文件可以设置数据库连接信息及Hikari连接池参数,感兴趣的可以了解一下

在 Spring Boot 中配置 HikariDataSource 非常简单,可以通过 application.propertiesapplication.yml 文件进行配置。以下是常用的配置项及说明:

1. application.yml 配置方式

spring:
  datasource:
    # 数据库连接信息
    url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: root
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.Driver
    
    # Hikari 连接池配置
    hikari:
      # 连接池名称(显示在日志和监控中)
      pool-name: MyHikariPool
      
      # 最大连接数(默认10,建议根据并发量调整)
      maximum-pool-size: 20
      
      # 最小空闲连接数(默认等于maximum-pool-size,建议设置为5-10)
      minimum-idle: 5
      
      # 连接超时时间(毫秒,默认30000ms=30秒)
      connection-timeout: 30000
      
      # 连接最大存活时间(毫秒,默认1800000ms=30分钟,建议小于数据库wait_timeout)
      max-lifetime: 1800000
      
      # 空闲连接超时时间(毫秒,默认600000ms=10分钟,设置为0表示永不超时)
      idle-timeout: 600000
      
      # 测试连接是否有效(建议配置,避免使用失效连接)
      connection-test-query: SELECT 1

2. application.properties 配置方式

# 数据库连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# Hikari 连接池配置
spring.datasource.hikari.pool-name=MyHikariPool
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.idle-timeout=600000
spring.datasource.hikari.connection-test-query=SELECT 1

关键配置项说明

配置项作用建议值
maximum-pool-size连接池允许的最大连接数5-20(根据并发量调整,不宜过大,避免数据库压力)
minimum-idle维持的最小空闲连接数5-10(避免频繁创建连接)
connection-timeout获取连接的超时时间30000ms(30 秒,超过则抛连接超时异常)
max-lifetime连接的最大存活时间小于数据库的 wait_timeout(MySQL 默认 8 小时,建议 30 分钟)
idle-timeout空闲连接的超时时间10 分钟(释放长期空闲的连接,避免资源浪费)
connection-test-query测试连接有效性的 SQLSELECT 1(MySQL)、SELECT 1 FROM DUAL(Oracle)

自定义配置类(可选)

如果需要通过代码自定义 HikariDataSource,可以创建配置类:

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration
public class HikariConfig {

    @Bean
    public DataSource dataSource() {
        HikariConfig config = new HikariConfig();
        
        // 数据库连接信息
        config.setJdbcUrl("jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8");
        config.setUsername("root");
        config.setPassword("your_password");
        config.setDriverClassName("com.mysql.cj.jdbc.Driver");
        
        // 连接池配置
        config.setPoolName("CustomHikariPool");
        config.setMaximumPoolSize(20);
        config.setMinimumIdle(5);
        config.setConnectionTimeout(30000);
        config.setMaxLifetime(1800000);
        config.setIdleTimeout(600000);
        config.setConnectionTestQuery("SELECT 1");
        
        return new HikariDataSource(config);
    }
}

注意事项

  1. Spring Boot 2.x 及以上默认使用 HikariCP,无需额外引入依赖(已包含在 spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa 中)。
  2. 配置时需确保 max-lifetime 小于数据库的 wait_timeout(避免数据库主动关闭连接后,连接池仍持有无效连接)。
  3. 生产环境建议配置 connection-test-query,确保获取的连接是有效的。

到此这篇关于springboot配置HikariDataSource连接池的两种方法的文章就介绍到这了,更多相关springboot配置HikariDataSource连接池内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • RabbitMQ中的延迟队列机制详解

    RabbitMQ中的延迟队列机制详解

    这篇文章主要介绍了RabbitMQ中的延迟队列机制详解,延时队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望,在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列,需要的朋友可以参考下
    2023-09-09
  • 解决Springboot项目中很多页面出现Whitelabel Error Page(404)的问题

    解决Springboot项目中很多页面出现Whitelabel Error Page(404)的问题

    最近在接手的前后端项目中发现其默认路径不是主机+端口(如:http://localhost:3453/)的形式,很多页面的访问是加了一个层级,只要访问页面就会出现Whitelabel Error Page(404),所以本文给大家提供了解决方案,需要的朋友可以参考下
    2024-02-02
  • 23种设计模式(8) java外观模式

    23种设计模式(8) java外观模式

    这篇文章主要为大家详细介绍了23种设计模式之java外观模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Java代码实现矩形覆盖实例

    Java代码实现矩形覆盖实例

    这篇文章主要介绍了Java代码实现矩形覆盖实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • Java equals 方法与hashcode 方法的深入解析

    Java equals 方法与hashcode 方法的深入解析

    面试时经常会问起字符串比较相关的问题,比如:字符串比较时用的什么方法,内部实现如何?hashcode的作用,以及重写equal方法,为什么要重写hashcode方法?以下就为大家解答,需要的朋友可以参考下
    2013-07-07
  • springcloud feign传输List的坑及解决

    springcloud feign传输List的坑及解决

    这篇文章主要介绍了springcloud feign传输List的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Maven实现自己的starter依赖

    Maven实现自己的starter依赖

    本文主要介绍了Maven实现自己的starter依赖,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Spark JDBC操作MySQL方式详细讲解

    Spark JDBC操作MySQL方式详细讲解

    这篇文章主要介绍了Spark JDBC操作MySQL方式,Spark SQL可以通过JDBC从传统的关系型数据库中读写数据,读取数据后直接生成的是DataFrame,然后再加上借助于Spark SQL丰富的API来进行各种操作
    2023-02-02
  • Java课设案例之百行代码实现简易计算器

    Java课设案例之百行代码实现简易计算器

    下面这篇文章主要给大家介绍了关于Java课设案例之百行代码实现简易计算器的相关资料,这是一个关于java简单计算器的完整课程设计以及源码,需要的朋友可以参考下
    2023-06-06
  • Java虚拟机常见内存溢出错误汇总

    Java虚拟机常见内存溢出错误汇总

    这篇文章主要汇总了Java虚拟机常见的内存溢出错误,警示大家,避免出错,感兴趣的朋友可以了解下
    2020-09-09

最新评论