Spring Boot 集成 Druid 监控数据源

关注Java后端技术全栈html

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

Druid 介绍

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

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

Druid 有何用?

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

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

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

  • 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 dual
spring.datasource.druid.validation-query=select 'x'
#申请链接时会执行validationQuery检测链接是否有效,开启会下降性能,默认为true
spring.datasource.druid.test-on-borrow=false
#归还链接时会执行validationQuery检测链接是否有效,开启会下降性能,默认为true
spring.datasource.druid.test-on-return=false
#当数据库抛出不可恢复的异常时,抛弃该链接
#spring.datasource.druid.exception-sorter=true
#是否缓存preparedStatement,mysql5.5+建议开启
#spring.datasource.druid.pool-prepared-statements=true
#当值大于0时poolPreparedStatements会自动修改成true
spring.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

88121341f35c9ccceac8d79799824742.png

若是把配置项中

spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin

去掉注释,再次启动。

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

331dc8503cbb7ab1fe84a982ba9a3e08.png

登陆进去

5bed0cb72ee97ccb30f30b55fa5cac46.png

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

咱们这里请求一下前面文

http://localhost:8080/mybatis

4512287505b1b38d08e83789066d8951.png

点击SQL监控

194376da31844b0f06be251e8c67cf4c.png

能够看到SQL的执行状况,还能够设置刷新SQL监控的时间。

3de33695466abe654eff6d83bd6eaa28.png

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

OK,今天就分享到此,是否是以为Spring Boot集成Druid其实仍是蛮简单的。

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

推荐阅读

如何优雅的导出 Excel

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

cc3d69d9f1ec8af33f4559503a16d9a7.png

相关文章
相关标签/搜索