Druid 是阿里巴巴开源的一款高性能数据库连接池,除了具备优秀的连接管理能力外,还内置了非常实用的监控与统计功能。
在 Spring Boot 项目中集成 Druid,不仅可以有效提升数据库访问性能,还能够借助其自带的监控页面,实时查看数据库连接状态、SQL 执行情况等关键指标。对于开发、排障和性能优化来说,它都是非常高效的工具。
1. 引言
随着互联网应用快速发展,系统对数据库连接池的性能、稳定性和可用性要求也越来越高。
传统连接池在面对现代应用的高并发、高性能需求时,往往难以全面满足。而 Druid 凭借出色的性能表现、完善的监控能力以及灵活的配置方式,已经成为很多 Java 开发者在 Spring Boot 项目中的常用选择。
下面将结合实际配置过程,详细介绍如何在 Spring Boot 中整合 Druid,并开启其监控功能。
2. 添加依赖
首先,在你的 pom.xml 中加入 Druid 的 Maven 依赖:
com.alibaba druid-spring-boot-3-starter 1.2.24
如果你使用的是 Gradle,也可以在 build.gradle 中添加如下配置:
implementation 'com.alibaba:druid-spring-boot-3-starter:1.2.24'
3. 配置数据源
添加依赖后,接下来需要在 application.properties 或 application.yml 中配置 Druid 数据源的相关参数。
先看 .properties 格式的配置方式:
# Druid 数据源配置 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.druid.initial-size=5 spring.datasource.druid.min-idle=5 spring.datasource.druid.max-active=20 spring.datasource.druid.test-on-borrow=true spring.datasource.druid.validation-query=SELECT 1 FROM DUAL # 监控页面设置 spring.datasource.druid.web-stat-filter.enabled=true spring.datasource.druid.stat-view-servlet.enabled=true spring.datasource.druid.stat-view-servlet.login-username=druid spring.datasource.druid.stat-view-servlet.login-password=d1234
再看 yaml 配置示例:
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false
username: root
password: 1234
type: com.alibaba.druid.pool.DruidDataSource
druid:
test-on-borrow: true
validation-query: SELECT 1 FROM DUAL
web-stat-filter:
enabled: true
stat-view-servlet:
enabled: true
login-username: druid
login-password: d1234
这些配置项中,既包含连接池的基础参数,例如初始连接数、最小空闲连接数、最大活动连接数等,也同时启用了 Druid 的 Web 统计过滤器和监控视图 Servlet,并设置了访问监控页面所需的用户名与密码。
4. 开启监控功能
如果想更直观地管理和监控 Druid 连接池的运行状态,就需要开启它的监控功能。这里主要涉及两个核心组件:
WebStatFilter:用于收集 Web 应用中的 SQL 监控数据以及慢查询日志。StatViewServlet:用于提供可视化监控页面,方便查看连接池运行指标和访问情况。
请确保在配置文件中已启用这两个组件:
spring.datasource.druid.web-stat-filter.enabled=true spring.datasource.druid.stat-view-servlet.enabled=true
除此之外,你还可以根据项目安全需求自定义监控页面的访问策略,例如限制指定 IP 访问,或者设置更安全的登录认证信息。
5. 自定义 Druid 配置(可选)
如果默认配置无法满足业务需求,可以通过编写自定义的 Druid 配置类,对默认行为进行覆盖或扩展。例如:
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource.druid")
@Bean
public DruidDataSource druidDataSource() {
return new DruidDataSource();
}
@Bean
public ServletRegistrationBean statViewServlet() {
ServletRegistrationBean bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
Map params = new HashMap<>();
params.put("loginUsername", username);
params.put("loginPassword", password);
params.put("allow", "localhost");
params.put("deny", "");
bean.setInitParameters(params);
return bean;
}
@Bean
public FilterRegistrationBean webStatFilter() {
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
Map params = new HashMap<>();
params.put("exclusions", "*.js,*.css,/druid/*");
bean.setUrlPatterns(Arrays.asList("/*"));
bean.setInitParameters(params);
return bean;
}
}
6. 访问监控页面
当所有配置完成后,启动 Spring Boot 应用,在浏览器中输入下面的地址即可访问 Druid 监控页面:
https://localhost:8080/druid/
使用前面配置好的用户名和密码登录后,你会看到一个信息非常全面的监控界面,其中包括连接池状态、SQL 查询统计、慢 SQL 分析等内容。通过这个页面,可以更方便地监控数据库连接使用情况,并快速定位 SQL 性能瓶颈。

7. 注意事项
- 生产环境安全:在生产环境部署时,务必加强监控页面的访问控制,避免数据库连接信息、SQL 统计数据等敏感内容暴露。
- 性能影响:Druid 的监控功能虽然十分实用,但在高并发场景下可能带来一定额外开销,因此需要根据实际业务情况合理设置监控级别。
- 更新维护:建议定期关注 Druid 版本更新,及时修复已知问题和安全漏洞,以保障系统稳定性与安全性。
8. 总结
通过以上步骤,我们就可以在 Spring Boot 应用中顺利集成 Druid 数据库连接池,并开启其实时监控功能。这样不仅能够提升数据库访问效率,还能为开发者提供更清晰的运行状态分析和更高效的性能调优手段。
