SpringBoot+Druid开启监控页面的实现示例

 更新时间:2024年06月06日 11:13:20   作者:陆慢慢  
本文主要介绍了SpringBoot+Druid开启监控页面的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

介绍

Druid 是一个开源的数据库连接池项目,由阿里巴巴集团开发并贡献给开源社区。它在Java领域中以其高性能、强大功能和易用性著称,是Java应用中广泛使用的数据库连接池组件之一。

Druid 的主要特点包括:

  • 高性能与低延迟: Druid 实现了高效的数据库连接管理,支持快速获取和释放数据库连接,从而提升系统性能。
  • 监控与统计:内建强大的监控功能,能够实时统计SQL执行情况、连接使用状况等信息,方便开发者优化SQL语句和数据库配置,并且可以与各种监控系统集成。
  • 扩展性:支持SQL解析与拦截,允许自定义插件来增强功能,比如SQL黑名单、白名单过滤,防止SQL注入攻击,以及慢查询日志记录等。
  • 资源控制:提供了完善的连接池配置选项,如连接数限制、超时时间设置、空闲连接检测与回收机制等,有助于更好地管理和控制数据库资源。
  • 标准接口实现:Druid 实现了JDBC的标准接口 javax.sql.DataSource,因此可以在任何兼容JDBC的应用程序中轻松替换传统的数据库连接方式。
  • 并发与线程安全:设计上充分考虑了高并发环境下的性能与稳定性,保证多线程环境下数据库连接的安全使用。

尽管在实际测试中,其他如HikariCP等连接池在某些场景下可能表现更优,但 Druid 由于其全面的功能集和良好的社区支持,在生产环境中仍被广泛应用。

我记得Springboot2.0以上版本默认集成的是Hikari。Druid已经被阿里弃用了。

为什么写?

因为网上资料一大把,但是我用了几个发现并不能打开druid的监控页面,而且很多一大串配置根本没有生效,或者说根本就不是这样的。(当然我也没完全理解到全部内容)

1、引入POM

    <!--druid-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.2.12</version>
    </dependency>

2、yaml文件配置

server:
  port: 8099

spring:
  datasource:
    druid:
      url: 数据库连接地址
      username: 数据库账号
      password: 数据库密码
      driver-class-name: com.mysql.cj.jdbc.Driver
      # 初始化物理链接的个数
      initial-size: 5
      # 最大连接池数量
      max-active: 30
      # 最小 连接池数量
      min-idle: 5
      # 获取连接时最大等待时间,单位毫秒 timeout链接超时
      max-wait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒  检测非核心链接的时间
      #既作为检测的间隔时间又作为testWhileIdel执行的依据
      time-between-eviction-runs-millis: 60000
      # 连接保持空闲而不被驱逐的最小时间
      min-evictable-idle-time-millis: 30000
      # 用来检测连接是否有效的sql,要求是一个查询语句  8小时问题 8个小时没跟mysql通信mysql会主动关闭该链接
      validation-query: SELECT 1 FROM DUAL
      # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,
      # 如果空闲时间大于min-evictable-idle-time-millis,执行validationQuery检测连接是否有效。
      test-while-idle: true
      # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
      test-on-borrow: false
      # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
      test-on-return: false
      # 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,
      # 比如说oracle。在mysql下建议关闭。不是mysql端,链接端,select * from student 查询缓存
      pool-prepared-statements: true
      # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。
      max-pool-prepared-statement-per-connection-size: 50
      #调优相关:基本上任何一个项目的性能瓶颈 1.io 2.cpu计算量
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计
      filters: stat,wall
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录  慢查询:增删改查
      connection-properties: druid.stat.mergeSql=true;
      filter:
        stat:
          slow-sql-millis: 1
      # 合并多个DruidDataSource的监控数据
      use-global-data-source-stat: true
#      # druid连接池监控
#      stat-View-Servlet:
#        login-username: admin
#        login-password: 1101165230
      # 排除一些静态资源,以提高效率
      web-stat-filter:
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"

3、创建配置类

/**
 * @author by Guoshun
 * @version 1.0.0
 * @description druid
 * @date 2024/2/4 17:15
 */
@Configuration//放入容器中
public class DruidConfig {
// 
//    @Bean
//    //绑定配置文件前缀为spring.datasource
//    @ConfigurationProperties(prefix = "spring.datasource.druid")
//    public DataSource druidDataSource(){
//        return new DruidDataSource();
//    }
    /**
     * 返回后台监控servlet
     */
    @Bean
    public ServletRegistrationBean monitor(){
        //请求
        ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
        //后台需要用户登录,账号密码配置
        HashMap<String, String> initParameters = new HashMap<>();
        //增加配置
        //登录key是固定的loginUsername loginPassword
        //TODO 这里改成你需要的用户名和密码
        initParameters.put("loginUsername","admin");
        initParameters.put("loginPassword","1101165230");
        //访问白名单
//        initParameters.put("allow","ip地址");
        bean.setInitParameters(initParameters);//设置初始化参数
        return bean;
    }

    /**
     * filter
     * @return
     */
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean<Filter> filterBean = new FilterRegistrationBean<>();
        filterBean.setFilter(new WebStatFilter());
        //可以过滤那些请求
        Map<String, String> initParameters = new HashMap<>();
        //不统计这些东西
        initParameters.put("exclusions","*.js,*.css,/druid/*");
        filterBean.setInitParameters(initParameters);
        return filterBean;
    }
}

启动项目输入地址:http://ip:port/druid/login.html

登录界面

到此这篇关于SpringBoot+Druid开启监控页面的实现示例的文章就介绍到这了,更多相关SpringBoot Druid开启监控内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • SpringBoot配置连接两个或多个数据库的实现

    SpringBoot配置连接两个或多个数据库的实现

    本文主要介绍了SpringBoot配置连接两个或多个数据库的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • springboot上传文件大小配置过程

    springboot上传文件大小配置过程

    springboot上传文件大小配置有两种方法,一种是直接在配置文件配置,一种是通过添加一个Bean来实现,文中详细介绍了两种方法的配置方式和注意事项
    2026-05-05
  • SpringBoot接口如何统一异常处理

    SpringBoot接口如何统一异常处理

    这篇文章主要介绍了SpringBoot接口如何统一异常处理,SpringBoot接口如何对异常进行统一封装,并统一返回呢?以下文的参数校验为例,如何优雅的将参数校验的错误信息统一处理并封装返回呢,感兴趣的下下伙伴可以一同参考一下
    2022-07-07
  • java获取日期的方法

    java获取日期的方法

    这篇文章介绍了java获取日期的方法,有需要的朋友可以参考一下
    2013-10-10
  • 聊聊springmvc中controller的方法的参数注解方式

    聊聊springmvc中controller的方法的参数注解方式

    本篇文章主要介绍了聊聊springmvc中controller的方法的参数注解方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • spring cloud服务连接超时问题及解决

    spring cloud服务连接超时问题及解决

    这篇文章主要介绍了spring cloud服务连接超时问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Spring Bean的初始化和销毁实例详解

    Spring Bean的初始化和销毁实例详解

    这篇文章主要介绍了Spring Bean的初始化和销毁,结合实例形式详细分析了Spring Bean的初始化和销毁相关配置、使用方法及操作注意事项,需要的朋友可以参考下
    2019-11-11
  • 浅谈Java中spring 线程异步执行

    浅谈Java中spring 线程异步执行

    这篇文章主要介绍了浅谈spring 线程异步执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 基于Mybatis映射的一点心得(分享)

    基于Mybatis映射的一点心得(分享)

    下面小编就为大家带来一篇基于Mybatis映射的一点心得(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • IDEA提示内存不足low memory的错误解决

    IDEA提示内存不足low memory的错误解决

    运行项目变得很卡,这种情况比较能直观感受出来,Idea内存指示器,则需要设置才能看到,本文主要介绍了IDEA提示内存不足low memory的错误解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03

最新评论