返回介绍

2.4 集成 Druid

发布于 2025-04-26 13:53:49 字数 4473 浏览 0 评论 0 收藏

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。