【SpringBoot 3.x】使用starter整合Druid

2023-11-17

Druid介绍

Druid是阿里巴巴的一个开源项目,号称为监控而生的数据库连接池,在功能、性能、扩展性方面都超过其他例如DBCPC3P0BoneCPProxoolJBoss DataSource等连接池,而且Druid已经在阿里巴巴部署了超过600个应用,通过了极为严格的考验,这才收获了大家的青睐!

本地开发环境说明

开发依赖 版本
Spring Boot 3.0.6
druid-spring-boot-3-starter 1.2.18
JDK 20

SpringBoot集成Druid

如果是SpringBoot 2.x,使用以下依赖

<!-- SpringBoot 2.x -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>${druid-spring-boot-starter.version}</version>
</dependency>

如果是SpringBoot 3.x,使用以下依赖

<!-- SpringBoot 3.x -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-3-starter</artifactId>
    <version>${druid-spring-boot-starter.version}</version>
</dependency>

application.yml配置

为了方便演示和直观,配置文件拆分成2个,application.ymlapplication-druid.yml

application.yml

spring:
  profiles:
    active: druid
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:tcp://localhost/D:/ProgramFiles/h2database/data/test;MODE=MYSQL;
    username:
    password:

application-druid.yml配置

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    # Druid的其他属性配置
    druid:
      # 初始化时建立物理连接的个数
      initial-size: 5
      # 连接池的最小空闲数量
      min-idle: 5
      # 连接池最大连接数量
      max-active: 20
      # 获取连接时最大等待时间,单位毫秒
      max-wait: 60000
      # 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
      test-while-idle: true
      # 既作为检测的间隔时间又作为testWhileIdel执行的依据
      time-between-eviction-runs-millis: 60000
      # 销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接(配置连接在池中的最小生存时间)
      min-evictable-idle-time-millis: 30000
      # 用来检测数据库连接是否有效的sql 必须是一个查询语句(oracle中为 select 1 from dual)
      validation-query: select 'x'
      # 申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
      test-on-borrow: false
      # 归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
      test-on-return: false
      # 是否缓存preparedStatement, 也就是PSCache,PSCache对支持游标的数据库性能提升巨大,比如说oracle,在mysql下建议关闭。
      pool-prepared-statements: false
      # 置监控统计拦截的filters,去掉后监控界面sql无法统计,stat: 监控统计、Slf4j:日志记录、waLL: 防御sqL注入
      filters: stat,wall,slf4j
      # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
      max-pool-prepared-statement-per-connection-size: -1
      # 合并多个DruidDataSource的监控数据
      use-global-data-source-stat: true
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

      web-stat-filter:
        # 是否启用StatFilter默认值true
        enabled: true
        # 添加过滤规则
        url-pattern: /*
        # 忽略过滤的格式
        exclusions: /druid/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico

      stat-view-servlet:
        # 是否启用StatViewServlet默认值true
        enabled: true
        # 访问路径为/druid时,跳转到StatViewServlet
        url-pattern: /druid/*
        # 是否能够重置数据
        reset-enable: false
        # 需要账号密码才能访问控制台,默认为root
        login-username: druid
        login-password: druid
        # IP白名单
        allow: 127.0.0.1
        # IP黑名单(共同存在时,deny优先于allow)
        deny:

集成过程出现的问题

由于本文使用SpringBoot 3.x版本,启动后,在浏览器输入

http://localhost:8080/druid
  • 但会报404的错误,首先要确保pom.xml引用的是druid-spring-boot-3-starter而不是druid-spring-boot-starter
  • 通过源码分析,druid-spring-boot-3-starter目前最新版本是1.2.18,虽然适配了SpringBoot3,但缺少自动装配的配置文件,需要手动在resources目录下创建META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,文件内容如下
com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure
  • 本来想针对这个问题提个issuePR,无奈github在国内访问太不稳定了

浏览器访问

  • 在浏览器输入: http://localhost:8080/druid
  • 登录账号密码是配置文件中指定的: druid/druid
    在这里插入图片描述

在线文档

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

【SpringBoot 3.x】使用starter整合Druid 的相关文章

  • AntDB内存管理之内存上下文之如何使用内存上下文

    5 如何使用内存上下文 使用内存上下文之前 我们需要先对其进行创建 AntDB启动时已经创建并初始化好了部分内存上下文 例如 TopMemoryContext 这个TopMemoryContext是所有内存上下文的父节点或者祖先节点 一般我
  • 【Mysql】InnoDB 引擎中的页目录

    一 页目录和槽 现在知道记录在页中按照主键大小顺序串成了单链表 那么我使用主键查询的时候 最顺其自然的办法肯定是从第一条记录 也就是 Infrimum 记录开始 一直向后找 只要存在总会找到 这种在数据量少的时候还好说 一旦数据多了 遍历耗
  • 高性能、可扩展、支持二次开发的企业电子招标采购系统源码

    在数字化时代 企业需要借助先进的数字化技术来提高工程管理效率和质量 招投标管理系统作为企业内部业务项目管理的重要应用平台 涵盖了门户管理 立项管理 采购项目管理 采购公告管理 考核管理 报表管理 评审管理 企业管理 采购管理和系统管理等多个
  • 【计算机毕业设计】基于web的山东红色旅游信息管理系统

    有效的处理想要的相关信息和如何传播有效的信息 一直是人类不断探索的动力 人类文明火种的传承都是通过了多种媒介作为载体 也是随着社会生产力的发展不断的更新 随着互联网的到来 信息传播与管理都上升了一个新的台阶 并且方便应用的同时也要考虑信息传
  • 【计算机毕业设计】线上招聘问答系统

    计算机网络发展到现在已经好几十年了 在理论上面已经有了很丰富的基础 并且在现实生活中也到处都在使用 可以说 经过几十年的发展 互联网技术已经把地域信息的隔阂给消除了 让整个世界都可以即时通话和联系 极大的方便了人们的生活 所以说 线上招聘问
  • 【计算机毕业设计】学生就业管理系统

    如今社会上各行各业 都喜欢用自己行业的专属软件工作 互联网发展到这个时候 人们已经发现离不开了互联网 新技术的产生 往往能解决一些老技术的弊端问题 因为传统学生就业信息管理难度大 容错率低 管理人员处理数据费工费时 所以专门为解决这个难题开
  • 【计算机毕业设计】Java图书馆智能选座系统

    现代经济快节奏发展以及不断完善升级的信息化技术 让传统数据信息的管理升级为软件存储 归纳 集中处理数据信息的管理方式 本图书馆智能选座系统就是在这样的大环境下诞生 其可以帮助使用者在短时间内处理完毕庞大的数据信息 使用这种软件工具可以帮助管
  • APP端网络测试与弱网模拟

    当前APP网络环境比较复杂 网络制式有2G 3G 4G网络 还有越来越多的公共Wi Fi 不同的网络环境和网络制式的差异 都会对用户使用app造成一定影响 另外 当前app使用场景多变 如进地铁 上公交 进电梯等 使得弱网测试显得尤为重要
  • 【计算机毕业设计】二手家电管理平台

    时代在飞速进步 每个行业都在努力发展现在先进技术 通过这些先进的技术来提高自己的水平和优势 二手家电管理平台当然不能排除在外 二手家电管理平台是在实际应用和软件工程的开发原理之上 运用java语言以及前台VUE框架 后台SpringBoot
  • 【计算机毕业设计】白优校园社团网站的设计与实现

    近些年 随着中国经济发展 人民的生活质量逐渐提高 对网络的依赖性越来越高 通过网络处理的事务越来越多 随着白优校园社团网站的常态化 如果依然采用传统的管理方式 将会为工作人员带来庞大的工作量 这将是一个巨大考验 需要投入大量人力开展对社团
  • 【计算机毕业设计】OA公文发文管理系统_xtv98

    近年来 人们的生活方式以网络为主题不断进化 OA公文发文管理就是其中的一部分 现在 无论是大型的还是小型的网站 都随处可见 不知不觉中已经成为我们生活中不可或缺的存在 随着社会的发展 除了对系统的需求外 我们还要促进经济发展 提高工作效率
  • 企业电子招投标系统源码之电子招投标系统建设的重点和未来趋势

    功能描述 1 门户管理 所有用户可在门户页面查看所有的公告信息及相关的通知信息 主要板块包含 招标公告 非招标公告 系统通知 政策法规 2 立项管理 企业用户可对需要采购的项目进行立项申请 并提交审批 查看所有的立项信息 主要功能包含 招标
  • 做测试不会 SQL?超详细的 SQL 查询语法教程来啦!

    前言 作为一名测试工程师 工作中在对测试结果进行数据比对的时候 或多或少要和数据库打交道的 要和数据库打交道 那么一些常用的sql查询语法必须要掌握 最近有部分做测试小伙伴表示sql查询不太会 问我有没有sql查询语法这一块的文档可以学习
  • 面试官问,如何在十亿级别用户中检查用户名是否存在?

    面试官问 如何在十亿级别用户中检查用户名是否存在 前言 不知道大家有没有留意过 在使用一些app注册的时候 提示你用户名已经被占用了 需要更换一个 这是如何实现的呢 你可能想这不是很简单吗 去数据库里查一下有没有不就行了吗 那么假如用户数量
  • 数据库 | 面试官:一次到底插入多少条数据合适啊?.....面试连环炮

    数据库 面试官 一次到底插入多少条数据合适啊 面试连环炮 数据库插入操作的基础知识 插入数据是数据库操作中的基础 但是 我们程序员将面临随之而来的问题 如何快速有效地插入数据 并保持数据库 性能 当你向数据库中插入数据时 这些数据直接存储到
  • SpringBoot+MybatisPlus+dynamic-datasources实现连接Postgresql和mysql多数据源

    场景 dynamic datasource spring boot starter实现动态数据源Mysql和Sqlserver dynamic datasource spring boot starter实现动态数据源Mysql和Sqlse
  • 基springboot+vue实现开放实验室管理系统子系统【附项目源码+论文说明】

    基springboot vue实现开放实验室管理系统子系统 摘要 信息技术永远是改变生活的第一种创新方式 各种行业的发展更是脱离不了科技化的支持 原本传统的行业正在被科技行业的切入悄悄的发生变化 就拿我们生活当中常见的事情举例而言 在外卖行
  • MongoDB - 整合 SpringBoot 操作全流程

    目录 一 MongoDB 整合 SpringBoot 1 1 引入依赖 1 2 配置文件 1 3 集合操作 1 4 相关注解 1 5 文档操作 1 5 1 查询 1 5 2 更新 1 5 3 删除 一 MongoDB 整合 SpringBo
  • 毕业设计:基于python人脸识别系统 LBPH算法 sqlite数据库 (源码)✅

    博主介绍 全网粉丝10W 前互联网大厂软件研发 集结硕博英豪成立工作室 专注于计算机相关专业 毕业设计 项目实战6年之久 选择我们就是选择放心 选择安心毕业 感兴趣的可以先收藏起来 点赞 关注不迷路 毕业设计 2023 2024年计算机毕业
  • Spring Boot引起的“堆外内存泄漏”排查及经验总结

    Spring Boot引起的 堆外内存泄漏 排查及经验总结 背景 为了更好地实现对项目的管理 我们将组内一个项目迁移到MDP框架 基于Spring Boot 随后我们就发现系统会频繁报出Swap区域使用量过高的异常 笔者被叫去帮忙查看原因

随机推荐

  • chatgpt赋能python:用Python计算e的方法

    用Python计算e的方法 Python是一种功能强大的编程语言 可以用它来解决许多数学问题 其中之一就是计算数学常数e e是一个无理数 约为2 71828 它在许多数学和科学领域中都有重要应用 例如微积分 概率论和物理学 什么是e e是一
  • qt无边框窗体的移动

    无边框窗体的移动 this gt setWindowFlags Qt FramelessWindowHint 设置窗体为无边框 鼠标移动窗体移动涉及到三个事件分别是 鼠标按下 鼠标移动 鼠标松开 这三个事件在Qwidget中是虚函数 在QW
  • 人工智能复习

    大纲 5个大题 知识表示 一阶谓词逻辑 产生式 框架表示法 知识推理 归结原理 搜索算法 第三 四题 宽度优先算法 深度优先算法 开放题 论述题 计算题 用归结反演求取问题的答案 已知 张 Zhang 和李 Li 是同班同学 如果x和y是同
  • 超全总线控制方式总结

    总线控制 看了网络上的文章 质量真的不太行 就自己结合着整理一下 总线控制主要是两个大方面 总线判优控制和总线通信控制 一 总线判优控制 总线上同一时刻只允许一个设备进行占用 为了防止冲突 我们引入了判优逻辑 仲裁谁可以先占用 实际上我也没
  • Java基础12--面向对象:封装

    Java基础12 面向对象 封装 在面向对象程式设计方法中 封装 英语 Encapsulation 是指一种将抽象性函式接口的实现细节部分包装 隐藏起来的方法 封装可以被认为是一个保护屏障 防止该类的代码和数据被外部类定义的代码随机访问 要
  • chatGLM介绍

    一 简述 清华大学推出的ChatGLM的第二代版本 支持中文 效果好 清华大学的ChatGLM应该是中文大语言模型中最好的 要求低 可以在消费级的显卡上运行 二 链接 工程 https github com THUDM ChatGLM2 6
  • Ajax提交form表单

    Ajax提交form表单 ajax 几个参数需要注意一下 type POST 方法类型 传递方式 dataType json 预期服务器返回的数据类型 url url 就是form里面的action 不要忘了url前面加 data form
  • 基于OpenCV的人脸识别系统

    人脸识别技术是计算机视觉领域的重要应用之一 它可以通过对人脸图像的分析和比较 实现对不同人的身份的自动识别 在本文中 我们将使用OpenCV这一流行的计算机视觉库 介绍一个简单的人脸识别系统 并且逐步深入到算法的具体实现方式 1 安装与配置
  • 京东Java研发值不值得去?

    有问有答是程序视界的一个免费问答栏目 感兴趣的朋友 可以按照下面的方式参与 在本文后留言 以有问有答开始 放心 这类留言不会被公开 只有被选中的留言会出现在周四晚发布的文章内 同时可根据要求匿名 或发邮件给 foruok 163 com 标
  • linux 服务启动依赖,linux下的系统服务介绍——init、systemd

    我们经常会听到服务service以及daemon这两个词 它们到底是什么意思呢 之间有什么区别和联系吗 linux下的服务service是常驻在内存中的程序 并且能够提供一些系统或网络方面的功能 而daemon从字面翻译是守护进程或后台进程
  • 五、C++语言进阶:智能指针

    5 智能指针 指针的危害 指针未初始化 野指针 内存泄漏 智能指针的出现就是为了解决上面的问题 智能指针基于这样的事实得以发挥作用 定义在栈中的智能指针 当超出其作用域时 会自动调用它的析构函数 从而可以释放其关联的内存资源 5 1 分类
  • 光遇聊天服务器维护,光遇变成“哑遇”?关闭聊天功能的背后,有你不知道的原因!...

    前言 大家好 我是阿瑶 每天为你发布游戏领域最新情报 当社交游戏失去聊天功能 会变成什么样 近期 光遇官博公布了一条消息 表示将暂时关闭聊天服务器 进行维护和更新 一开始玩家们都不相信 毕竟光遇是社交手游 聊天是最重要的玩法 然而没过多久
  • request.GetResponse()超时的解决办法

    var request HttpWebRequest WebRequest Create url request Timeout Timeout Infinite request KeepAlive true var response Ht
  • next文章目录跳转_Hexo-NexT配置个人博客

    一 安装NexT Hexo 安装主题的方式非常简单 只需要将主题文件拷贝至站点目录的 themes 目录下 然后修改下配置文件即可 具体到 NexT 来说 安装步骤如下 1 克隆最新版本 在终端窗口下 定位到 Hexo 站点目录下 使用 G
  • 【RTOS学习】单片机中的C语言

    作者 一只大喵咪1201 专栏 RTOS学习 格言 你只管努力 剩下的交给时间 本喵默认各位小伙伴都会C语言 我们平时学习C语言都是在Windows环境下学习的 对于程序执行的底层逻辑了解的不是非常清楚 本喵在这里给大家介绍一下 C语言在单
  • 【计算机视觉

    文章目录 一 问题 二 个人的理解 2 1 线性层的理解 2 2 pseudo words的理解 2 2 1 详细一点 2 2 2 为什么可以使用文本嵌入空间中的技术 2 2 3 pseudo word的本质是什么 2 2 4 好处 2 2
  • 时间序列分析波动性预测GARCH模型

    GARCH Generalized Autoregressive Conditional Heteroskedasticity 模型是一种常用于预测金融时间序列波动性的统计模型 它是ARCH Autoregressive Condition
  • Axios 发送 json 数据

  • [1008]ROW_NUMBER和RANK和DENSE_RANK的区别

    文章目录 row number over partition by order by 使用说明书 ROW NUMBER和RANK和DENSE RANK的区别 row number over partition by order by 使用说
  • 【SpringBoot 3.x】使用starter整合Druid

    Druid介绍 Druid是阿里巴巴的一个开源项目 号称为监控而生的数据库连接池 在功能 性能 扩展性方面都超过其他例如DBCP C3P0 BoneCP Proxool JBoss DataSource等连接池 而且Druid已经在阿里巴巴