Administrator
发布于 2024-10-06 / 72 阅读
0

4、SpringBoot2:Druid 数据库&监控集成

Druid 介绍 

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

Druid 首先是一个数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个 ProxyDriver,一系列内置的 JDBC 组件库,一个 SQL Parser。在 Javad 的世界中 Druid 是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括 DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。

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 的支持。官网这样解释:Druid Spring Boot Starter 用于帮助在 Spring Boot 项目中轻松集成 Druid 数据库连接池和监控。

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


相关配置

引入依赖包

<dependency>

    <groupId>org.springframework</groupId>

    <artifactId>spring-jdbc</artifactId>

</dependency>

<dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <scope>runtime</scope>

</dependency>

<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>druid-spring-boot-starter</artifactId>

    <version>1.1.14</version>

</dependency>

spring-jdbc 包千万别忘记引入,然后是 mysql 的连接包和 druid 的相关包。

application 配置

Druid Spring Boot Starter 配置属性的名称完全遵照 Druid,可以通过 Spring Boot 配置文件来配置 Druid 数据库连接池和监控,如果没有配置则使用默认值。(注意现在已使用com.mysql.cj.jdbc.Driver

# 数据库连接驱动、url、登入账户密码

spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/localtest

spring.datasource.username=root

spring.datasource.password=root

# 初始化大小、最小、最大连接数

spring.datasource.druid.initial-size=3

spring.datasource.druid.min-idle=3

spring.datasource.druid.max-active=10

# 配置获取连接等待超时的时间

spring.datasource.druid.max-wait=60000

# 监控后台账号和密码

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

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

# 配置 StatFilter

spring.datasource.druid.filter.stat.log-slow-sql=true

spring.datasource.druid.filter.stat.slow-sql-millis=2000

# 配置下面参数用于启动监控页面,考虑安全问题,默认是关闭的,按需开启

spring.datasource.druid.stat-view-servlet.enabled=true

spring.datasource.druid.filter.stat.enabled=true

spring.datasource.druid.web-stat-filter.enabled=true


在以前项目的基础上,增加了对 Druid 连接池的配置,以及 SQL 监控的配置,druid-spring-boot-starter默认情况下开启 StatFilter 的监控功能。Druid Spring Boot Starter 不限于对以上配置属性提供支持,DruidDataSource 内提供 setter 方法的可配置属性都将被支持。

更多配置内容参考:druid-spring-boot-starter

配置完成后,直接启动项目访问地址:http://localhost:8080/druid,就会出现 druid 监控后台的登陆页面,输入账户和密码后,就会进入首页。

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

由于项目没配置相关Hibernate、JPA、mbatie或JDBC的接口使用,所以监控不到相关项目的Sql,将会在下一章进行mybatie多数据库源集成中一起展示和讲解。

除了使用 starter 来配置外,也可以使用一下配置:

https://github.com/alibaba/druid

https://github.com/alibaba/druid/wiki/常见问题