做Java开发时,ref="/tag/1/" style="color:#3D6345;font-weight:bold;">数据库连接是个高频操作。每次请求都新建连接,不仅慢还容易把数据库拖垮。这时候就得靠连接池来帮忙——它像一个“停车场”,提前准备好一批数据库连接,用的时候直接取,用完放回,效率高又稳定。
为什么要用连接池?
想象一下你每天上班都要临时造一辆车来开车,那得多麻烦?连接池就是帮你把车提前造好、停在楼下,随时可以开走。Spring 默认不自带连接池,但整合起来非常方便,主流的有 HikariCP、Druid、Tomcat JDBC 等。
使用HikariCP配置连接池(推荐)
HikariCP 是目前性能最强、最轻量的连接池之一,Spring Boot 2.x 开始默认集成的就是它。只需要在 pom.xml 中引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
然后在 application.yml 中配置数据源:
spring:
datasource:
url: jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf8
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
这些参数控制着“停车场”的大小和管理规则:最大连接数20个,最少留5个待命,连接最长存活30分钟,空闲超过10分钟就回收。
如果想换 Druid 连接池
阿里开源的 Druid 不仅是连接池,还带监控功能,适合需要排查SQL性能问题的场景。先替换依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.16</version>
</dependency>
配置方式稍有不同:
spring:
datasource:
url: jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf8
username: root
password: 123456
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 5
min-idle: 5
max-active: 20
stat-view-servlet:
enabled: true
url-pattern: /druid/*
login-username: admin
login-password: admin
加上这些配置后,启动项目访问 /druid/ 页面就能看到连接情况、SQL执行统计,跟汽车仪表盘一样直观。
小贴士:别忘了驱动依赖
不管选哪个连接池,数据库驱动不能少。MySQL 8.x 要用 cj 版本驱动,如果是 PostgreSQL 或 Oracle,记得改 driver-class-name 和依赖包。
实际开发中,连接池就像厨房里的锅碗瓢盆——不用每次做饭都去烧陶土做碗,而是提前备好一套,用完洗了再用。合理配置能让你的应用响应更快、更稳,也不容易被并发压垮。