spring boot 数据源连接池配置核心是确认使用 hikaricp(2.x/3.x 默认),通过 application.yml/.properties 中 spring.datasource.hikari.* 设置参数,依赖 starter 即可自动装配,无需手动定义 bean;需避免引入冲突连接池依赖,并确保驱动类名为 com.mysql.cj.jdbc.driver。

Spring Boot 配置数据源连接池参数,核心是明确用的是哪种连接池(默认 HikariCP),再通过 application.yml 或 application.properties 设置对应前缀的属性。自动配置会识别类路径下的连接池实现并加载,你只需提供参数,无需手动写 Bean(除非需定制逻辑)。
确认连接池类型和依赖是否就位
Spring Boot 2.x 和 3.x 默认使用 HikariCP。确保项目已引入 JDBC 或 ORM 相关 starter(如 spring-boot-starter-jdbc 或 mybatis-spring-boot-starter),且没有额外引入 Druid、Tomcat JDBC 等其他连接池依赖——否则可能触发条件竞争,导致自动配置失效或参数不生效。
- MySQL 8+ 需添加
mysql-connector-j(runtime scope) - 驱动类名必须正确:
com.mysql.cj.jdbc.Driver(非旧版com.mysql.jdbc.Driver) - 若误加了
druid-spring-boot-starter,Hikari 的配置项将被忽略,需统一用spring.datasource.druid.*
HikariCP 常用参数配置(推荐 YAML 格式)
所有 Hikari 参数必须以 spring.datasource.hikari. 开头。以下为生产常用且关键的几项,兼顾稳定性与资源效率:
- maximum-pool-size:最大连接数,建议设为应用预期并发请求数 × 1.2~1.5,常见值 10~50
-
minimum-idle:最小空闲连接数,避免频繁创建销毁,通常设为
maximum-pool-size的 1/2~2/3,不低于 3 - connection-timeout:获取连接超时时间,单位毫秒,默认 30000(30 秒),高负载系统可降至 10000~20000
- idle-timeout:空闲连接最大存活时间,单位毫秒,默认 600000(10 分钟),设为 0 表示永不过期(慎用)
-
max-lifetime:连接最大总存活时间,单位毫秒,默认 1800000(30 分钟),应略小于数据库
wait_timeout(如 MySQL 默认 8 小时,可设为 28800000 即 8 小时) -
connection-test-query:校验 SQL,推荐
SELECT 1(MySQL)或SELECT 1 FROM DUAL(Oracle 兼容)
多数据源场景下的连接池参数配置
使用 dynamic-datasource-spring-boot-starter 等框架时,全局连接池参数统一写在 spring.datasource.dynamic.hikari.* 下,对所有动态数据源生效;也可为每个数据源单独配置,例如:
spring:
datasource:
dynamic:
primary: master
datasource:
master:
url: jdbc:mysql://...
username: ...
hikari:
pool-name: master-hikari
maximum-pool-size: 15
max-lifetime: 1800000
slave:
url: jdbc:mysql://...
username: ...
hikari:
pool-name: slave-hikari
maximum-pool-size: 8
max-lifetime: 1200000
注意:各数据源的 hikari 块是独立作用域,互不影响,适合读写分离或分库场景做差异化调优。
验证配置是否生效
启动日志中搜索 HikariPool 关键字,会输出类似 HikariPool-1 - Starting... 及初始化连接数信息;还可通过 Actuator 的 /actuator/metrics 或 /actuator/prometheus 查看实时连接数、活跃数、等待数等指标。若发现连接数始终为 0 或一直卡在 Creating initial connections,大概率是 URL、用户名、密码或驱动类名有误,需回查基础连接配置。











