购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

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,具体代码如下:

等同于:

类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应用等进行监控。 MbO676r7uIaDZyDLhoaX2gv3Ybgp4qlL0M4LUpnNJt2iF6XAaWXvbVx9vhtyeKRl

点击中间区域
呼出菜单
上一章
目录
下一章
×