写点什么

Spring Boot 集成 Druid 监控数据源

用户头像
田维常
关注
发布于: 2020 年 11 月 04 日

关注公众号Java 后端技术全栈”**


回复“面试”获取全套大厂面试资料


Druid 介绍


Druid 是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和 SQL 解析器组成,该项目主要是为了扩展 JDBC 的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计 SQL 信息、SQL 性能收集、SQL 注入检查、SQL 翻译等,程序员可以通过定制来实现自己需要的功能。通常叫"德鲁伊的"


Druid 首先是一个数据库连接池,但它不仅仅是一个数据库连接池,还包含了一个 ProxyDriver,一系列内置的 JDBC 组件库,一个 SQL Parser。在 Java 的世界中 Druid 是监控做的最好的数据库连接池,在功能、性能、扩展性方面,也有不错的表现。


Druid 有何用?


  • 替换其他 Java 连接池,Druid 提供了一个高效、功能强大、可扩展性好的数据库连接池。

  • 可以监控数据库访问性能,Druid 内置提供了一个功能强大的 StatFilter 插件,能够详细统计 SQL 的执行性能,这对于线上分析数据库访问性能有很大帮助。

  • 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题,DruidDruiver 和 DruidDataSource 都支持 PasswordCallback。

  • SQL 执行日志,Druid 提供了不同的 LogFilter,能够支持 Common-Logging、Log4j 和 JdkLog,可以按需要选择相应的 LogFilter,监控应用的数据库访问情况。

  • 扩展 JDBC,如果你要对 JDBC 层有编程的需求,可以通过 Druid 提供的 Filter 机制,很方便编写 JDBC 层的扩展插件。


Spring  Boot 快速集成 Druid


阿里也未 Druid 提供了 Spring Boot Starter。官网这样解释:


Druid Spring Boot Starter 用于帮助你在 Spring Boot 项目中轻松集成 Druid 数据库连接池和监控。


Druid Spring Boot Starter 主要做了哪些事情呢?其实这个组件包很简单,主要提供了很多自动化的配置,按照 Spring Boot 的理念对很多内容进行了预配置,让我们在使用的时候更加的简单和方便。


添加依赖包


<dependency>    <groupId>com.alibaba</groupId>    <artifactId>druid</artifactId>    <version>1.1.10</version></dependency><!--自启动Druid管理后台--><dependency>    <groupId>com.alibaba</groupId>    <artifactId>druid-spring-boot-starter</artifactId>    <version>1.1.10</version></dependency>
复制代码


application.properties 中添加 druid 的配置项


properties#config druid#连接池的设置#初始化时建立物理连接的个数spring.datasource.druid.initial-size=5#最小连接池数量spring.datasource.druid.min-idle=5#最大连接池数量 maxIdle已经不再使用spring.datasource.druid.max-active=20#获取连接时最大等待时间,单位毫秒spring.datasource.druid.max-wait=60000#申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。spring.datasource.druid.test-while-idle=true#既作为检测的间隔时间又作为testWhileIdel执行的依据spring.datasource.druid.time-between-eviction-runs-millis=60000#销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接spring.datasource.druid.min-evictable-idle-time-millis=30000#用来检测连接是否有效的sql 必须是一个查询语句#mysql中为 select 'x'#oracle中为 select 1 from dualspring.datasource.druid.validation-query=select 'x'#申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为truespring.datasource.druid.test-on-borrow=false#归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为truespring.datasource.druid.test-on-return=false#当数据库抛出不可恢复的异常时,抛弃该连接#spring.datasource.druid.exception-sorter=true#是否缓存preparedStatement,mysql5.5+建议开启#spring.datasource.druid.pool-prepared-statements=true#当值大于0时poolPreparedStatements会自动修改为truespring.datasource.druid.max-pool-prepared-statement-per-connection-size=20#配置扩展插件spring.datasource.druid.filters=stat,wall#通过connectProperties属性来打开mergeSql功能;慢SQL记录spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500#合并多个DruidDataSource的监控数据spring.datasource.druid.use-global-data-source-stat=true#设置访问druid监控页的账号和密码,默认没有#spring.datasource.druid.stat-view-servlet.login-username=admin#spring.datasource.druid.stat-view-servlet.login-password=admin
复制代码


然后启动项目。


访问地址:http://localhost:8080/druid/webapp.html



如果把配置项中


spring.datasource.druid.stat-view-servlet.login-username=adminspring.datasource.druid.stat-view-servlet.login-password=admin
复制代码


去掉注释,再次启动。


访问地址:http://localhost:8080/druid/webapp.html



登录进去



首页会展示项目使用的 JDK 版本、数据库驱动、JVM 相关统计信息。根据上面的菜单可以看出 Druid 的功能非常强大,支持数据源、SQL 监控、SQL 防火墙、URI 监控等很多功能。


我们这里请求一下前面文


http://localhost:8080/mybatis



点击 SQL 监控



可以看到 SQL 的执行情况,还可以设置刷新 SQL 监控的时间。



这里的 SQL 监控会将项目中具体执行的 SQL 打印出来,展示此 SQL 执行了多少次、每次返回多少数据、执行的时间分布是什么。这些功能非常的实用,方便我们在实际生产中查找出慢 SQL,最后对 SQL 进行调优。


OK,今天就分享到此,是不是觉得 Spring Boot 集成 Druid 其实还是蛮简单的。


码字不易,望点 在看+分享,谢谢!


推荐阅读


如何优雅的导出 Excel


终于明白为什么要加 final 关键字了!



发布于: 2020 年 11 月 04 日阅读数: 57
用户头像

田维常

关注

关注公众号:Java后端技术全栈,领500G资料 2020.10.24 加入

关注公众号:Java后端技术全栈,领500G资料

评论

发布
暂无评论
Spring Boot 集成 Druid 监控数据源