1. 为什么选择Druid连接池
在Spring Boot项目中,数据库连接池的选择直接影响着应用的性能和稳定性。Druid作为阿里巴巴开源的数据库连接池实现,相比HikariCP、Tomcat JDBC等方案有几个显著优势:
- 监控功能完善:内置StatFilter提供SQL执行统计、性能监控等功能
- 防SQL注入:支持WallFilter进行SQL防火墙防护
- 可扩展性强:支持Filter扩展机制
- 稳定性高:经过多年双11高并发场景验证
druid-spring-boot-starter是Druid官方提供的Spring Boot Starter,可以让我们以最简配置快速集成Druid连接池。下面我将详细介绍从零开始的完整集成过程。
2. 基础环境搭建
2.1 项目依赖配置
首先在pom.xml中添加必要依赖:
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>注意:版本号建议使用最新稳定版,可以通过Maven中央仓库查询最新版本
2.2 基础配置参数
在application.yml中配置基本参数:
spring: datasource: url: jdbc:mysql://localhost:3306/test_db username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource3. 高级功能配置
3.1 监控页面配置
Druid内置了强大的监控功能,可以通过以下配置开启:
spring: datasource: druid: stat-view-servlet: enabled: true login-username: admin login-password: admin url-pattern: /druid/*配置后访问http://localhost:8080/druid即可看到监控页面,包含:
- 数据源状态
- SQL监控
- URI监控
- Session监控
- Spring监控
3.2 SQL防火墙配置
防止SQL注入攻击:
spring: datasource: druid: filter: wall: enabled: true config: drop-table-allow: false4. 性能优化配置
4.1 连接池参数调优
spring: datasource: druid: initial-size: 5 min-idle: 5 max-active: 20 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 test-while-idle: true test-on-borrow: false test-on-return: false参数说明:
- initial-size:初始化连接数
- min-idle:最小空闲连接数
- max-active:最大连接数
- max-wait:获取连接等待超时时间
4.2 监控统计配置
spring: datasource: druid: filters: stat,wall filter: stat: enabled: true log-slow-sql: true slow-sql-millis: 10005. 常见问题解决
5.1 监控页面无法访问
可能原因:
- 未添加Servlet配置
- 路径配置错误
- 权限不足
解决方案: 检查stat-view-servlet配置是否正确,确保有访问权限
5.2 连接泄露问题
现象:连接数不断增加直到max-active
解决方案:
- 开启removeAbandoned配置
- 设置合理的removeAbandonedTimeout
spring: datasource: druid: remove-abandoned: true remove-abandoned-timeout: 1806. 生产环境建议
- 监控页面必须设置强密码
- 定期检查慢SQL并优化
- 根据实际负载调整连接池参数
- 开启SQL防火墙防护
- 配置合理的连接超时时间
通过以上配置,可以在Spring Boot项目中充分发挥Druid连接池的优势,既保证了性能又增强了安全性。我在多个生产项目中采用这种配置方案,系统稳定运行多年未出现数据库连接相关问题。