Java配置数据库连接池核心是选用HikariCP等实现并正确初始化,关键在于连接复用、生命周期管理与防泄漏;推荐HikariCP因其高性能、小体积及合理默认配置,Spring Boot 2.0+已将其设为默认。

Java中配置数据库连接池,核心是选好连接池实现(如HikariCP、Druid、DBCP2),再通过代码或配置文件初始化数据源。关键不在“连上数据库”,而在“高效复用连接、自动管理生命周期、防止泄漏”。
选一个主流连接池,HikariCP最推荐
HikariCP性能高、体积小、默认配置合理,Spring Boot 2.0+已将其作为默认连接池。Maven引入只需一行:
用配置文件方式初始化(以application.yml为例)
Spring Boot项目直接在application.yml里写清楚参数,启动时自动装配:
spring:datasource:
url: jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
maximum-pool-size: 20
minimum-idle: 5
connection-timeout: 30000
idle-timeout: 600000
max-lifetime: 1800000
- maximum-pool-size别盲目调大,一般设为CPU核数×(2~4)较稳妥
- connection-timeout建议30秒内,避免业务线程长时间阻塞
- max-lifetime略小于数据库的wait_timeout(MySQL默认8小时),防连接被服务端主动断开
纯Java代码手动配置(非Spring场景)
不依赖框架时,直接new HikariDataSource并设置属性:
立即学习“Java免费学习笔记(深入)”;
HikariConfig config = new HikariConfig();config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
config.setUsername("root");
config.setPassword("123456");
config.setMaximumPoolSize(10);
config.setConnectionTimeout(5000);
HikariDataSource dataSource = new HikariDataSource(config);
// 后续通过 dataSource.getConnection() 获取连接
- 务必把dataSource声明为static或单例,避免重复创建连接池
- 应用关闭前调用dataSource.close()释放资源
- 不要在finally块里close connection后又close dataSource——连接池自己管理连接生命周期
验证是否生效的小技巧
连接池配好了,怎么确认它真在工作?
- 开启Hikari日志:logging.level.com.zaxxer.hikari=DEBUG,启动时能看到“HikariPool-1 - Starting...
- 查活跃连接数:HikariCP提供JMX或HikariDataSource.getHikariPoolMXBean().getActiveConnections()
- 故意输错密码,看报错是不是“Unable to acquire JDBC Connection”,而不是Driver加载失败——说明连接池已介入
基本上就这些。不复杂但容易忽略细节,比如忘记关池、超时设得比DB还长、或者用完Connection不归还(其实调用close()就是归还,不是销毁)。池子搭好了,后面SQL执行、事务控制才稳得住。










