阿里druid-spring-boot-starter 配置,个人整理以及遇到的问题(防止之后找不到)

2023-10-26

简介,什么是Druid

Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计SQL信息、SQL性能收集、SQL注入检查、SQL翻译等,程序员可以通过定制来实现自己需要的功能。

1、Druid官方github地址(这个可以多看看)

https://github.com/alibaba/druid

2、需要导入一些依赖

Druid数据池依赖

<!--        数据库-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.11</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.11</version>
        </dependency>
<!--        数据库日志实现-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!--SpringBoot 的aop 模块-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

3、Druid配置信息

现版本其实有大量的默认值都已经配置好了,可以自己去看看源码

(配置信息多,用yaml)

(对于Druid配置,只需要选用自己需要的就行了,我这里是写的一个总结,后面自己有需要其他还会加)

spring:
#数据库配置项
# JDBC 配置(驱动类自动从url的mysql识别,数据源类型自动识别)(yaml相对来说配置信息更加好观看)
  datasource:
    druid:
      type: com.alibaba.druid.pool.DruidDataSource
      url: jdbc:mysql://localhost:3306/crm
      driver-class-name: com.mysql.cj.jdbc.Driver
      username: root
      password: 2003

#    连接池配置信息(通常来说,只需要修改initialSize、minIdle、maxActive
#     如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。分库分表较多的数据库,建议配置为false。removeabandoned不建议在生产环境中打开如果用SQL Server,建议追加配置)
  #     初始化大小
      initial-size: 5
      min-idle: 5
      max-active: 20
  #     配置获取连接等待超时的时间
      max-wait: 60000
  #     配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
  #     配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000
  #     申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
      test-while-idle: true
  #     获取连接时执行检测,建议关闭,影响性能
      test-on-borrow: false
  #     是否开启PSCache,PSCahce对支持游标的数据库性能提示巨大,oracle建议开启,mysql下建议关闭
      pool-prepared-statements: false
  #     开启poolPreparedStatments后生效
      max-pool-prepared-statement-per-connection-size: 20

      #     配置监控统计拦截的filters,去掉后监控界面sql无法统计,‘wall’用于防火墙·,log4j2:日志
      filters: stat,wall,log4j2

      # Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
      # Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔
      aop-patterns: 'com.haoyang.webadmin.*'

        #     配置监控属性: 在druid-starter的: com.alibaba.druid.spring.boot.autoconfigure.stat包下进行的逻辑配置
      web-stat-filter: # WebStatFilter配置,
        enabled: true #默认为false,表示不使用WebStatFilter配置,就是属性名去短线
        url-pattern: /* #拦截该项目下的一切请求
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*' #对这些请求放行
        session-stat-enable: true
        principal-session-name: session_name
        principal-cookie-name: cookie_name
  #        profile-enable:
        #        session-stat-max-count:

      stat-view-servlet: # StatViewServlet配置
        enabled: true  #默认为false,表示不使用StatViewServlet配置,就是属性名去短线
        url-pattern: /druid/*  #配置DruidStatViewServlet的访问地址。后台监控页面的访问地址
        reset-enable: false #禁用HTML页面上的“重置”功能,会把所有监控的数据全部清空,一般不使用
        login-username: admin #监控页面登录的用户名
        login-password: 2003 #监控页面登录的密码
#       StatViewSerlvet展示出来的监控信息比较敏感,是系统运行的内部情况,如果你需要做访问控制,可以配置allow和deny这两个参数
#       deny优先于allow,如果在deny列表中,就算在allow列表中,也会被拒绝。如果allow没有配置或者为空,则允许所有访问
#       配置的格式
#        <IP>
#        或者<IP>/<SUB_NET_MASK_size>其中128.242.127.1/24
#        24表示,前面24位是子网掩码,比对的时候,前面24位相同就匹配,不支持IPV6。
        allow: 127.0.0.1,192.168.2.111  #IP白名单(没有配置或者为空,则允许所有访问)。允许谁访问druid后台,默认允许全部用户访问。
        deny:  #IP黑名单 (存在共同时,deny优先于allow)。不允许谁访问druid后台

      filter:
        stat:
          enabled: true         # 开启DruidDataSource状态监控
          db-type: mysql        # 数据库的类型
          log-slow-sql: true    # 开启慢SQL记录功能
          slow-sql-millis: 2000 # 默认3000毫秒,这里超过2s,就是慢,记录到日志
        wall:
          enabled: true
          config:
            drop-table-allow: false

4、问题

以前学习并没有仔细观看,现在回来看一遍发现了一些问题(后续继续添加,目前学的不深)

1、配置问题

一开始把所有的数据库连接池配置信息全部写进spring.datasource.druid下,这样子

spring:
  datasource:
    druid:
      filters: stat,wall,log4j2
        #     初始化大小
      initial-szie: 5
      min-idle: 5
      max-active: 20

然后写了一个测试类

测试类

@SpringBootTest
class ApplicationTests {
    @Autowired
    DataSource dataSource;
    @Test
    void contextLoads() throws SQLException {
        System.out.println(dataSource.getClass());
        //获得连接
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
        DruidDataSource druidDataSource = (DruidDataSource) dataSource;
        System.out.println(druidDataSource.getMaxActive());
        System.out.println(druidDataSource.getInitialSize());
        System.out.println(druidDataSource.getMinIdle());
        //关闭连接
        connection.close();
    }
}

​ 然后经过了一些列断点,源码查看之后,发现spring.datasource.druid配置并没有生效,发现是支持监控配置,但连接池配置并没有写进去

这里看了一下官方的SpringBoot配置示例:

https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

最后发现我自己写了一个自定义注入类,然后 注入的并不是spring.datasource.druid下的,而是spring.datasource下的 ,所以会报错,如果 并没有写这个类也没事,SpringBoot会自动注入

​/**
 *       将自定义的Druid数据源添加到容器中,不再让Spring Boot 自动创建
 *       这样做的目的是: 绑定全局配置文件中的druid 数据源属性注入到 com.alibaba.druid.pool.DruidDataSource
 *       从而让它们生效
 *
 *       @ConfigurationProperties(prefix = "spring.datasource"):
 *         作用就是将 全局配置文件中前缀为Spring.dataSource的属性值注入到com.alibaba.druid.pool.DruidDataSource的同名参数中
 */

@Configuration
public class DruidConfig {
    /**
     *     将所有前缀为spring.datasource下的配置项都加载DataSource中
     */

//@ConfigurationProperties("spring.datasource"),这样注入,无法将druid配置文件下的连接池配置自动注入,所以我加一个.druid,这样就是将spring.datasource.druid的属性值注入到com.alibaba.druid.pool.DruidDataSource的同名参数中,而不是spring.datasource

    @ConfigurationProperties("spring.datasource.druid")
    @Bean
    public DataSource druidDataSource() {
        return new DruidDataSource();
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

阿里druid-spring-boot-starter 配置,个人整理以及遇到的问题(防止之后找不到) 的相关文章

随机推荐

  • XREAL 联合创始人吴克艰谈AR:下一代计算平台及其关键技术

    编者按 一种行业观点是 AR或是未来十年 三十年的革命性技术 是下一代计算平台 近半个世纪 我们总能听到苹果在AR行业的创新动作 开辟了新的硬件范式 AR VR行业为苹果不断欢呼的同时 激发了人们的好奇心 究竟 人类在戴上AR眼镜的那一瞬间
  • 【C++】内存分区&引用

    内存分区 首先我们要了解 内存区域大概分为四个区域 1 代码区 这里主要存放我们写的代码的二进表达式 即CPU可以看懂的机械指令 这个区域有两个特征 只读和共享 前者可以保证代码的不会被随意修改 后者可以保证相同代码多次阅读不需要创建多个副
  • linux-kali 2020.3.3 虚拟机 环境 下载安装

    一 所需环境配置文件下载 1 虚拟机 这次配置环境使用的vmware版本为15 5 0 虚拟机大家可以自行在相关微信公众号上搜索破解版 按照其上进行安装 如下图 如果需要也可以vm官方网站上进行下载相关软件 直接下载对应版本即可 vm官网链
  • python argument 1 must be 2-item sequence, not int

    在继续python学习的时候 发现报错了 出现错误argument 1 must be 2 item sequence not int 明明我是照着书打的 为什么会出现错误呢 import pygame import sys from se
  • 《软件测试》第十三章 软件安全测试

    软件测试 第十三章 软件安全测试 13 0 前言 13 1 战争游戏 电影 13 2 了解动机 13 3 威胁模式分析 13 4 软件安全是一项功能吗 软件漏洞是一个缺陷吗 13 5 了解缓冲区溢出 13 6 使用安全的字符串函数 13 7
  • Microsoft visual C++ 2013 redistributable (x86) setup failed

    Microsoft visual C 2013 redistributable x86 0x80070005 setup failed log 截图 下载SubInACL工具 链接 https blogs msdn microsoft co
  • css flex shrink,CSS3 flex-shrink属性用法详解

    下面本文章来给各位介绍一下CSS3 flex shrink使用方法 希望例子能帮助到各位 flex grow控制flex container有多余空间的时候怎么分配 默认值为0 即所有的flex items都不分配 flex shrink1
  • C#里面SQLite读取数据的操作

    挂载表格时候用 public static DataSet Query string SQLString using SQLiteConnection connection new SQLiteConnection connectionSt
  • BottomNavigationView+ViewPager实现页面滑动

    如图所示 在androidstudio中新建一个Bottom Navigation Activity 修改布局中的内容
  • import无法定位到输入点

    torch geometric安装 运行环境需要torch geometric 下载安装完之后 再 import torch geometric时 一直出错 安装不上 找了很多解决方法 终于找到可以解决的办法了 亲测有效 原因 最终发现因为
  • 最小重量机器设计问题

    相关问题 工作分配问题 设某一机器由n个部件组成 每一种部件都可以从m个不同的供应商处购得 设 wij 是从供应商j 处购得的部件i的重量 cij 是相应的价格 试设计一个回溯算法 给出总价格不超过d的最小重量机器设计 对于给定的机器部件重
  • .net core 并发下的线程安全问题

    抱歉 其实内容并不如题 背景 写测试demo所出现的异常 供大家学习与拍砖 net core webapi项目 做了一个授权的filter 真正的生产项目的话 JWT很棒 单个接口测试没有问题 当用前端在同一个页面调用多个接口的时候 运行服
  • Python语言学习实战-内置函数filter()的使用(附源码和实现效果)

    实现功能 filter 函数是Python的内置函数之一 用于过滤序列中的元素 它接受两个参数 一个是函数 用于判断每个元素是否符合条件 另一个是可迭代对象 包含要过滤的元素 filter 函数返回一个迭代器 其中包含所有符合条件的元素 f
  • Beam:没有模板Haskell的数据库功能!

    作为Haskell Web系列的一部分 我们检查了Persistent和Esqueleto库 这些中的第一个允许您使用特殊语法创建数据库模式 然后 您可以使用Template Haskell生成所有必要的Haskell数据类型和类型的实例
  • R语言 第2章 数据对象与数据读写(2)

    重复序列的创建 rep as factor c yizi1 yinzi2 yinzi3 3 rep 是重复函数 它可以将某一向量重复若干次 使用格式 rep x times 1 length out NA each 1 其中x是预重复的序列
  • win10无法装载iso文件_win10系统打开iso格式文件的四种方法

    许多用户在win10系统中下载一个ISO文件 经常重装系统的小伙伴都知道 iso格式是一种光盘映像的文件格式 Windows10系统自带的虚拟光驱 无需任何软件就可以直接打开ISO文件 如果没有虚拟光驱该怎么打开 接下去分享win10系统打
  • python二元函数图像在线绘制_Python:绘制两个变量的二维函数

    我的功能是 def g R r return np sqrt 2 0 R r r R 1 np sqrt R np sqrt R np sqrt 2 0 r 1 r 1 r 1 0 np sqrt R np sqrt 2 0 1 R np
  • R手册(Tidy+Transform)--缺失处理(naniar and simputation)

    文章目录 naniar 缺失数据摘要 阴影矩阵 可视化缺失值变量分布关系 simputation make imputation simpler for missing data 缺失值是指粗糙数据中由于缺少信息而造成的数据的聚类 分组 删
  • cloudstack GuestNetwork Ingress-Egress rule

    Egress 1 创建 egress 规则 1 向management发出api命令 createEgressFirewallRulecmd 的create 方法 最终在cloud数据库firewall rules表中插一条state Ad
  • 阿里druid-spring-boot-starter 配置,个人整理以及遇到的问题(防止之后找不到)

    简介 什么是Druid Druid是阿里巴巴开源平台上的一个项目 整个项目由数据库连接池 插件框架和SQL解析器组成 该项目主要是为了扩展JDBC的一些限制 可以让程序员实现一些特殊的需求 比如向密钥服务请求凭证 统计SQL信息 SQL性能