SpringBoot集成Druid的SQL监控统计

本文详细介绍Druid数据库连接池的集成配置,包括添加依赖、配置属性及Servlet和Filter的注册方式。同时,深入解析StatViewServlet和WebStatFilter的作用,帮助理解Druid的SQL监控统计功能。

Druid是阿里巴巴开源的数据库连接池,提供了优秀的对数据库操作的监控功能。

一. 集成的配置方式

详见:https://juejin.im/post/5aceec94f265da2395315d68

1. 添加对druid的依赖

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>


2. 在application.properties中添加对druid的配置

    spring:
    datasource:
         type: com.alibaba.druid.pool.DruidDataSource
    还可以添加druid的其它信息

3. 创建DruidServlet和DruidFilter,其中Servlet和Filter的配置有两种方式:
    3.1. 通过Spring容器的注册工厂注入(ServletRegistrationBean和FilterRegistrationBean)

@Configuration
public class DruidConfig {
    //注册Servlet
    @Bean
    @ConditionalOnMissingBean
    public ServletRegistrationBean addS(){
        ServletRegistrationBean registrationBean=new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
        return registrationBean;
    }

    //注册Filter
    @Bean
    @ConditionalOnMissingBean
    public FilterRegistrationBean addF(){
        FilterRegistrationBean registrationBean=new FilterRegistrationBean(new WebStatFilter());
        registrationBean.addUrlPatterns("/*");
        return registrationBean;
    }
}

    3.2. 通过自定义类  添加注解@WebServlet和@WebFilter

@WebFilter(urlPatterns = "/*")
public class MyFilter extends WebStatFilter {
}

@WebServlet("/druid/*")
public class MyServlet extends StatViewServlet {
}

二. 下面讲讲Druid在SQL监控统计功能中,内置的一些类和注解:

1.StatViewServlet

StatViewServlet用于展示Druid的统计信息

  • 提供监控信息展示的html页面
  • 提供监控信息的JSON API

StatViewServlet是一个标准的javax.servlet.http.HttpServlet,com.alibaba.druid.support.http.StatViewServlet 

如果需要通过用户名和密码才能查看JDBC的执行的状态信息,需要配置Servlet的 loginUsername 和 loginPassword这两个初始参数。

2. WebStatFilter

webStatFilterDruid用于统计Druid的监控信息

如果没有配置WebStatFilter,那么,我们无法获取相关的统计信息。

比如:SQL监控TAB上的数据,无法获取JDBC相关的SQL执行信息。

### Spring Boot 集成 DruidSQL 监控时网页无法跳转的原因分析 在 Spring Boot 中集成 Druid 数据源并启用其慢 SQL 监控功能时,如果发现监控页面未能正常加载或跳转,可能涉及以下几个方面的问题: #### 1. **配置文件中的路径映射冲突** 如果 `druid-stat-view-servlet` 的路径与其他 Servlet 或过滤器存在冲突,则可能导致页面无法正确访问。通常情况下,Druid统计视图默认路径为 `/druid/*`,但如果项目中有其他拦截器覆盖此路径,可能会引发异常行为[^1]。 #### 2. **权限控制未设置或错误** Druid 提供了内置的安全机制来保护管理界面免受未经授权的访问。如果没有正确配置用户名密码或者 IP 白名单,浏览器会返回 401 错误码(Unauthorized),从而阻止页面渲染。确保已在 application.properties 文件中加入以下参数: ```properties spring.datasource.druid.stat-view-servlet.loginUsername=admin spring.datasource.druid.stat-view-servlet.loginPassword=123456 spring.datasource.druid.stat-view-servlet.allow=127.0.0.1,::1,localhost # 允许本地访问 ``` #### 3. **依赖版本兼容性问题** 当使用的 Druid 版本与当前项目的 Spring Boot 和数据库驱动程序版本不匹配时,也可能引起不可预见的行为。建议检查 Maven/Gradle 构建脚本内的依赖项是否存在过期或冲突的情况。例如,在 pom.xml 中应指定合适的 Druid 版本号: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> <!-- 确认最新稳定版 --> </dependency> ``` #### 4. **HTML 资源缺失或损坏** 若 Druid 控制台所需的静态资源文件丢失(如 CSS、JS 等),即使服务器端逻辑无误,前端仍可能出现空白页现象。此时需验证是否已成功引入 druid-web.jar 并将其解压到 classpath 下适当位置[^2]。 #### 解决方案总结代码片段 下面是一个完整的 Spring Boot 应用示例,展示如何正确初始化 Druid 及其相关组件: ```java import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication(exclude = {DruidDataSourceAutoConfigure.class}) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值