在Spring Boot中集成Druid监控需三步:引入druid-spring-boot-starter依赖;在application.yml中配置数据源及filters: stat,wall,log4j2等参数;通过@Configuration类注册StatViewServlet(映射/druid/*并设登录凭证)和WebStatFilter。

在 Java 项目中使用 Druid(阿里巴巴开源的高性能数据库连接池)并开启其内置监控功能,主要分为三步:引入依赖、配置数据源、启用监控 Servlet 和 Filter。下面以 Spring Boot 项目为例,给出清晰、可落地的操作方式。
添加 Druid 依赖
Druid 官方已提供 Spring Boot Starter,推荐使用它来简化集成:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.23</version> <!-- 建议用最新稳定版 -->
</dependency>注意:若项目已引入 spring-boot-starter-jdbc 或 mybatis-spring-boot-starter,无需额外配 DataSource 自动装配,Druid 会自动替换默认 HikariCP。
配置 Druid 数据源参数
在 application.yml 中配置数据库连接和 Druid 特性:
立即学习“Java免费学习笔记(深入)”;
spring:
datasource:
druid:
url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
<pre class='brush:java;toolbar:false;'> # 连接池基础配置
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
# 配置监控统计拦截的 filters(必须包含 stat,开启 SQL 监控)
filters: stat,wall,log4j2
filter:
stat:
log-slow-sql: true
slow-sql-millis: 1000
wall:
config:
drop-table-allow: false</pre>关键点说明:
-
filters: stat,wall,log4j2是开启监控的核心——stat提供 SQL 执行统计与监控页面数据;wall是防火墙(防 SQL 注入);log4j2可选,用于日志输出 -
slow-sql-millis设为 1000 表示记录执行超 1 秒的慢 SQL - 确保
driver-class-name与 MySQL 版本匹配(8.x 推荐用com.mysql.cj.jdbc.Driver)
注册 Druid 监控 Servlet 和 Filter
Druid 的监控页面(类似 /druid/index.html)需要通过 Servlet 暴露,Filter 则用于统计 Web 关联的数据库调用。在 Spring Boot 中,推荐通过配置类注册:
@Configuration
public class DruidConfig {
<pre class='brush:java;toolbar:false;'>@Bean
@ServletComponentScan // 启用 @WebServlet、@WebFilter 等注解(若不用此注解,则需手动注册)
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
return factory;
}
@Bean
public ServletRegistrationBean<StatViewServlet> druidStatViewServlet() {
ServletRegistrationBean<StatViewServlet> registrationBean = new ServletRegistrationBean<>(
new StatViewServlet(), "/druid/*");
// 设置登录账号密码(生产环境必须设置!)
registrationBean.addInitParameter("loginUsername", "admin");
registrationBean.addInitParameter("loginPassword", "admin123");
// 允许访问的 IP,不配置则允许所有
registrationBean.addInitParameter("allow", "127.0.0.1");
// 禁用重置按钮(可选)
registrationBean.addInitParameter("resetEnable", "false");
return registrationBean;
}
@Bean
public FilterRegistrationBean<WebStatFilter> druidWebStatFilter() {
FilterRegistrationBean<WebStatFilter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new WebStatFilter());
registrationBean.addUrlPatterns("/*");
registrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return registrationBean;
}}
配置完成后,启动应用,访问 http://localhost:8080/druid,输入账号密码即可进入监控首页,查看数据源状态、SQL 列表、URI 关联、Spring 监控等。
安全与生产建议
Druid 监控页面暴露了大量数据库运行时信息,务必做好防护:
- 禁止在生产环境开放
allow为""或"0.0.0.0",应限定内网 IP 段 - 必须设置强密码,避免使用默认
admin/admin - 可通过 Nginx 反向代理 + Basic Auth 增加一层认证
- 如使用 Spring Security,可结合
HttpSecurity对/druid/**路径做权限控制
监控页面不仅能看实时连接数、活跃 SQL,还能导出 JSON 数据、查看执行堆栈,是定位慢查和连接泄漏的利器。


















