- 内容简介
- 前言
- 第 1 章 第一个 Spring Boot 项目
- 第 2 章 集成 MySQL 数据库
- 第 3 章 集成 Spring Data JPA
- 第 4 章 使用 Thymeleaf 模板引擎
- 第 5 章 Spring Boot 事务支持
- 第 6 章 使用过滤器和监听器
- 第 7 章 集成 Redis 缓存
- 第 8 章 集成 Log4j 日志
- 8.3 使用 Log4j 记录日志
- 第 9 章 Quartz 定时器和发送 Email
- 第 10 章 集成 MyBatis
- 第 11 章 异步消息与异步调用
- 第 12 章 全局异常处理与 Retry 重试
- 第 13 章 集成 MongoDB 数据库
- 第 14 章 集成 Spring Security
- 第 15 章 Spring Boot 应用监控
- 第 16 章 集成 Dubbo 和 Zookeeper
- 第 17 章 多环境配置与部署
- 第 18 章 Spring Boot 原理解析
- 参考文献
2.4 集成 Druid

2.4.1 Druid 概述
Druid 是阿里巴巴开源项目中的一个数据库连接池。Druid 是一个 JDBC 组件,包括三部分:① DruidDriver 代理 Driver,能够提供基于 Filter-Chain 模式的插件体系;② DruidDataSource 高效可管理的数据库连接池;③SQLParser,支持所有 JDBC 兼容的数据库,包括 Oracle、MySQL、SQL Server 等。Durid 在监控、可扩展、稳定性和性能方面具有明显的优势,通过其提供的监控功能可以观察数据库连接池和 SQL 查询的工作情况,使用 Druid 连接池可以提高数据库的访问性能。
2.4.2 引入依赖
我们在项目的 pom 文件中继续添加 druid 的依赖,具体代码如下:
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.4</version> </dependency>
在这里,笔者使用的是 1.1.4 版本,添加完依赖之后,IntelliJ IDEA 会自动帮助我们下载依赖包,只要刷新一下依赖即可。
2.4.3 Druid 配置
依赖添加完成之后,在 application.properties 配置文件中继续添加 Druid 配置,之前我们已经添加了 MySQL 的连接 url、用户名、密码等配置,application.properties 完整代码如下:
### MySQL 连接信息 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ### 数据源类别 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource ### 初始化大小,最小,最大 spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 ### 配置获取连接等待超时的时间,单位是毫秒 spring.datasource.maxWait=60000 ### 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 spring.datasource.timeBetweenEvictionRunsMillis=60000 ### 配置一个连接在池中最小生存的时间,单位是毫秒 spring.datasource.minEvictableIdleTimeMillis=300000 spring.datasource.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false ### 打开 PSCache,并且指定每个连接上 PSCache 的大小 spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 ### 配置监控统计拦截的 filters,去掉后监控界面的 SQL 无法统计,'wall' 用于防火墙 spring.datasource.filters=stat,wall,log4j ### 通过 connectProperties 属性来打开 mergeSql 功能,慢 SQL 记录 spring.datasource.connectionProperties=druid.stat. mergeSql=true;druid.stat.slowSqlMillis=5000 ### 合并多个 DruidDataSource 的监控数据 #spring.datasource.useGlobalDataSourceStat=true
上面每一个配置的含义都有相关的注释,这里就不再过多介绍。这里要注意的是,在.properties 配置文件中,#字符是注释符号。
2.4.4 开启监控功能
开启监控功能的方式有多种:①使用原生的 Servlet、Filter 方式,然后通过 @ ServletComponentScan 启动扫描包进行处理;②使用代码注册 Servlet 和 Filter 的方式处理。这里我们选择 Spring Boot 推荐的第二种方式实现,在项目的 Java 目录下(/src/main/java/com.example.demo.filter)新建一个配置类 DruidConfiguration.java,具体代码如下:
- @Configuration:Spring 中有很多 XML 配置文件,文件中会配置很多 bean。在类上添加 @Configuration 注解,大家可以理解为该类变成一个 XML 配置文件。
- @Bean:等同于 XML 配置文件中的<bean>配置。Spring Boot 会把加上该注解方法的返回值装载进 Spring IoC 容器,方法的名称对应<bean>标签的 id 属性值。具体代码如下:
等同于:
类 ServletRegistrationBean 和 FilterRegistrationBean:在 DruidConfiguration.java 配置文件中,我们配置了两个类,即 druidStatViewServlet 和 druidStatFilter,并且通过注册类 ServletRegistrationBean 和 FilterRegistrationBean 实现 Servlet 和 Filter 类的注册。
在 druidStatViewServlet 类中,我们设定了访问数据库的白名单、黑名单、登录用户名和密码等信息。在 druidStatFilter 类中,我们设定了过滤的规则和需要忽略的格式。至此,配置类开发完成。
2.4.5 测试
在 DruidConfiguration.java 类开发完成之后,重新启动一下项目,然后通过访问网址 http://localhost:8080/druid/index.html 打开监控的登录界面,如图 2-10 所示。在登录界面中输入用户名:admin 和密码:123456 即可登录成功,如图 2-11 所示。
图 2-10 Druid 监控登录界面
图 2-11 Druid 登录成功界面
在 Druid 的监控界面中,我们可以对数据源、SQL、Web 应用等进行监控。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论