springboot 配置 HikariDataSource 连接池信息
springboot 配置 HikariDataSource 连接池信息
在 Spring Boot 中配置 HikariDataSource 非常简单,可以通过 application.properties
或 application.yml
文件进行配置。以下是常用的配置项及说明:
1. application.yml 配置方式
yaml
spring:datasource:# 数据库连接信息url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghaiusername: rootpassword: your_passworddriver-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 配置方式
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 | 测试连接有效性的 SQL | SELECT 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 {@Beanpublic 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);}
}
注意事项
- Spring Boot 2.x 及以上默认使用 HikariCP,无需额外引入依赖(已包含在
spring-boot-starter-jdbc
或spring-boot-starter-data-jpa
中)。 - 配置时需确保
max-lifetime
小于数据库的wait_timeout
(避免数据库主动关闭连接后,连接池仍持有无效连接)。 - 生产环境建议配置
connection-test-query
,确保获取的连接是有效的。