【SpringBoot】通过引入 starter 方式整合 Druid数据源

人性在任何时候都可以很强大 —— 致1024 程序员节

本篇文章主要介绍的是 通过 starter 的方式整合 druid 数据源

1. 第一步:引入依赖

在项目的配置文件 pom.xml 文件中引入 druid-spring-boot-starter 依赖

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid-spring-boot-starter</artifactId>
   <version>1.1.17</version>
</dependency>

注意:导入依赖后,要使用 Reload 重新加载一下项目,不然导入的依赖会爆红,方法如下:

在这里插入图片描述

分析 DruidDataSourceAutoConfigure.class 自动配置原理:

在这里插入图片描述

一、分析自动配置执行条件
  1. @ConditionalOnClass({DruidDataSource.class}) —— 容器中必须有DruidDataSource.class
  2. @AutoConfigureBefore({DataSourceAutoConfiguration.class}) —— 我们的自动配置在官方的之前,即排在官方的前面,用我们的自动配置不用官方的
  3. @EnableConfigurationProperties({DruidStatProperties.class, DataSourceProperties.class}) —— 扩展配置

因此,得到了 Druid 扩展配置项为 spring.datasource.druid (DruidStatProperties.class 中声明)

@ConfigurationProperties("spring.datasource.druid")
二、分析 import 导入
@Import({
DruidSpringAopConfiguration.class, 
DruidStatViewServletConfiguration.class, 
DruidWebStatFilterConfiguration.class, 
DruidFilterConfiguration.class})

1. DruidSpringAopConfiguration.class

@ConditionalOnProperty({"spring.datasource.druid.aop-patterns"})

用于监控 spring 组件,配置项为 spring.datasource.druid.aop-patterns

2. DruidStatViewServletConfiguration.class,

@ConditionalOnProperty(
    name = {"spring.datasource.druid.stat-view-servlet.enabled"},
    havingValue = "true"
)

用于进行监控页的配置(配置监控页账号、密码等),默认开启,其配置项为 spring.datasource.druid.stat-view-servlet

3. DruidWebStatFilterConfiguration.class

@ConditionalOnProperty(
    name = {"spring.datasource.druid.web-stat-filter.enabled"},
    havingValue = "true"
)

用于配置 Druid 监控统计功能,默认开启,配置项为 spring.datasource.druid.web-stat-filter

4. DruidFilterConfiguration.class

用于配置 Druid 的所有自己官方提供的 filter 的配置,具体如下:

    private static final String FILTER_STAT_PREFIX = "spring.datasource.druid.filter.stat";
    private static final String FILTER_CONFIG_PREFIX = "spring.datasource.druid.filter.config";
    private static final String FILTER_ENCODING_PREFIX = "spring.datasource.druid.filter.encoding";
    private static final String FILTER_SLF4J_PREFIX = "spring.datasource.druid.filter.slf4j";
    private static final String FILTER_LOG4J_PREFIX = "spring.datasource.druid.filter.log4j";
    private static final String FILTER_LOG4J2_PREFIX = "spring.datasource.druid.filter.log4j2";
    private static final String FILTER_COMMONS_LOG_PREFIX = "spring.datasource.druid.filter.commons-log";
    private static final String FILTER_WALL_PREFIX = "spring.datasource.druid.filter.wall";
    private static final String FILTER_WALL_CONFIG_PREFIX = "spring.datasource.druid.filter.wall.config";

2. 第二步:自定义配置

分析了其自动配置原理后,我们可以在 application.yaml 文件中自定义 Druid 相关配置,代码示例如下,具体功能见注释:

spring:
  datasource: # 配置数据库属性
    url: jdbc:mysql://localhost:3306/practice
    username: root
    password: 5201314love
    driver-class-name: com.mysql.jdbc.Driver

    druid: # Druid 所有的配置都以 spring.datasource.druid 开头
      aop-patterns: com.wanqing.admin.* # 配置 aop 功能,监控整个 admin 文件

      filters: stat, wall # 配置开启哪些 Druid 提供我们的 filter, 用逗号隔开
      filter: # 配置单个 filer 的属性
        stat:
          slow-sql-millis: 2000 # 超过 2000 ms 的查询都是慢查询
          log-slow-sql: true # 将慢查询记录到日志
        wall:
          enabled: true
          config:
            drop-table-allow: true # 防火墙不容许删表

      stat-view-servlet: # 配置监控页的功能
        enabled: true # 开启功能,默认开启
        login-username: wanqing # 配置登录名
        login-password: 5201314love # 配置密码
        reset-enable: false # 重置按钮关闭

      web-stat-filter: # 配置 web 监控的功能
        enabled: true
        url-pattern: /* # 要监控所有 /xx 的请求
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*' # 要排除的请求
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值