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/常见问题