十六 Springboot-配置Druid连接池

德鲁伊(Druid)后台监控配置详细操作。生产环境定位问题方法 从写System.out.println(“hello world!”)开始,到现在我一直认为,一个项目的系统上线,完成CURD(增删改查)的代码远远不够。为便于项目快速定位问题、排查思路、压力监控、加载缓慢等疑难杂症,你们如今又留了几手去捕捉呢?当然,成熟的软件公司会有运维部的支撑,极大程度上帮忙定位和解决了非代码上问题。对我现在的情况而言,拿到的产线环境,甚至还要自己去敲命令挂载磁盘…因此,不得不为上线后的问题排查做好几手的准备。今天就分下一下个人在项目中使用的Druid的监控配置。 阅读详情

16.1 Druid是什么

​ Druid 是阿里巴巴开源的数据库连接池,除了性能比较高以外,Druid 还能能够提供强大的监控和扩展功能。所以在企业中是使用的非常多的。具体特点如下:

  1. ​ 可以监控数据库访问性能, Druid 内置提供了一个功能强大的StatFilter插件,能够详细统计 SQL 的执行性能,这对于线上分析数据库访问性能有帮助。
  2. 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。 DruidDruiver 和 DruidDataSource 都支持 PasswordCallback 。
  3. SQL 执行日志, Druid 提供了不同的 LogFilter ,能够支持 Common-Logging 、 Log4j 和 JdkLog ,你可以按需要选择相应的 LogFilter ,监控你应用的数据库访问情况。
  4. 扩展 JDBC ,如果你要对 JDBC 层有编程的需求,可以通过 Druid 提供的 Filter 机制,很方便编写 JDBC 层的扩展插件。

16.2 Springboot中使用

16.2.1 方案选择

​ 目前 Druid 官方为我们提供了两种使用依赖方式,一种是基于传统 Java 工程提供的依赖包, maven 坐标如下:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.20</version>
</dependency

​ 还有一种是基于 Spring Boot 提供的依赖包, maven 坐标如下:

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

​ 下面的这种依赖包除了包含了上面的那种 Druid 基础包,还包含了 Spring Boot 自动配置的依赖包以及 sl4j-api ,我们在 Spring Boot 中使用 Druid ,当然是推荐各位读者使用第二种方式引入依赖。

image-20201227101806687

16.2.2 实现

步骤分析
1 拷贝Springboot-mybatis
2 导入druid的springboot的starter
3 进行application.yml配置
4 启动测试
16.2.2.1 拷贝Springboot-mybatis

​ 略过

16.2.2.2 导入druid的springboot的starter
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.20</version>
</dependency>
16.2.2.3 进行application.yml配置
server:
  port: 8080 #端口
spring:
  application:
    name: springboot-hello # 应用名称
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql:///test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: admin
    driverClassName: com.mysql.jdbc.Driver
    druid:
      # 连接池的配置信息
      # 初始化时建立物理连接的个数
      initial-size: 3
      # 连接池最小连接数
      min-idle: 3
      # 连接池最大连接数
      max-active: 20
      # 获取连接时最大等待时间,单位毫秒
      max-wait: 60000
      # 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
      test-while-idle: true
      # 既作为检测的间隔时间又作为testWhileIdel执行的依据
      time-between-connect-error-millis: 60000
      # 销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接
      min-evictable-idle-time-millis: 30000
      # 用来检测连接是否有效的sql 必须是一个查询语句
      # mysql中为 select 'x'
      # oracle中为 select 1 from dual
      validation-query: select 'x'
      # 申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
      test-on-borrow: false
      # 归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
      test-on-return: false
      # 是否缓存preparedStatement,mysql5.5+建议开启
      pool-prepared-statements: true
      # 当值大于0时poolPreparedStatements会自动修改为true
      max-pool-prepared-statement-per-connection-size: 20
      # 合并多个DruidDataSource的监控数据
      use-global-data-source-stat: false
      # 配置扩展插件
      filters: stat,wall,slf4j
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      # 定时输出统计信息到日志中,并每次输出日志会导致清零(reset)连接池相关的计数器。
      time-between-log-stats-millis: 300000
      # 配置DruidStatFilter
      web-stat-filter:
        enabled: true
        url-pattern: '/*'
        exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'
      # 配置DruidStatViewServlet
      stat-view-servlet:
        # 是否启用StatViewServlet(监控页面)默认值为false(考虑到安全问题默认并未启动,如需启用建议设置密码或白名单以保障安全)
        enabled: true
        url-pattern: '/druid/*'
        # IP白名单(没有配置或者为空,则允许所有访问)
        allow: 127.0.0.1,192.168.0.1
        # IP黑名单 (存在共同时,deny优先于allow)
        deny: 192.168.0.128
        # 禁用HTML页面上的“Reset All”功能
        reset-enable: false
        # 登录名
        login-username: root
        # 登录密码
        login-password: admin
mybatis:
  type-aliases-package: org.yaosang.org.domain,org.yaosang.org.query
16.2.2.4 启动测试
  1. 启动不报错

  2. 测试Service能通过

  3. 打开浏览器访问:http://localhost:8080/druid/ ,查看 Druid 监控页面,结果如图

    image-20201227102623483

    image-20201227102645629

16.3 Springboot中使用-数据库密码加密

​ 在生产环境中,直接在配置文件中暴露明文密码是一件非常危险的事情,出于两点考虑:对外,即使应用服务被入侵,数据库还是安全的;对内,生产环境的数据库密码理论上应该只有 dba 知道,但是代码都是在代码仓库中放着的,如果密码没有加密,每次发布前 dba 都需要手动修改配置文件后再进行打包编译。

16.3.1 生成数据库加密密码

​ 找到Druid.jar目录执行对数据库密码进行加密的命令。

​ D:\softwares\apache-maven-3.2.5\repo\com\alibaba\druid\1.1.20>java -cp druid-1.1.20.jar com.alibaba.druid.filter.config.ConfigTools admin

​ image-20201227102932149

16.3.2 application.yml中配置

spring:
  application:
    name: springboot-hello # 应用名称
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql:///test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    #加密后的数据库密码
    password: StZsMyc/586jXHFJpYt5qJq4kKSm4WNb5HwBlv+omQnHYNgs48VjpkEIgTsPOdsDSYEpVU9/bG5Mc3lmxQ00YQ==
    driverClassName: com.mysql.jdbc.Driver
    druid:
      filter:
        config:
          enabled: true
      #config.decrypt.key 拷贝publickey
      connection-properties: config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJDWSLB1I/eX5WUhO2xYK3m199DZJVgO3hm6XXGBKjww+AYu2B+unKCMl12tPW+stl2mvJrKg4GchQXkj4zq1x0CAwEAAQ==
    # 省略无数多

16.3.3. 测试

  1. 启动不报错

  2. 测试Service能通过

  3. 打开浏览器访问:http://localhost:8080/druid/ ,查看 Druid 监控页面,结果如图

    image-20201227102623483

    image-20201227102645629

16.4 小结

​ 本章节讲解了再Springboot中使用druid,并且对数据库密码进行了加密处理

配置 Druid 数据源及密码加密-SpringBoot 2.7 实战基础 前文集成 MyBatis Plus,实现了一组增删改查接口。在启动服务时,从控制台中可以看出 Spring Boot 默认使用Hikari作为数据库连接池,Hikari性能很优秀。在国内使用较多的连接池还属阿里开源的Druid,中文发音为德鲁伊。Druid结合了 C3P0、DBCP 等 DB 池的优点,同时还加入了日志监控,可以很好的监控 DB 池连接和 SQL 的执行情况。... 阅读详情

相关推荐

Spring Boot(六十六):集成Alibaba Druid 连接池

在现代的Java应用中,使用一个高效可靠的数据源是至关重要的。Druid连接池作为一款强大的数据库连接池,提供了丰富的监控和管理功能,成为很多Java项目的首选。本文将详细介绍如何在Spring Boot项目中配置数据源,集成Druid连接池,以实现更高效的数据库连接管理。

u013938578的博客 535

Druid 介绍及配置

  转自阿里Druid官方,欢迎大家使用Druid,常见问题在这里解答,希望对大家有所帮助。 1. Druid是什么? Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。 2. 在哪里下载druid 正式版本下载: maven中央仓库: http://central.maven.org/maven2/com/alibaba/druid/  3. 怎么获...

开发猫 4152

Spring Boot(六十九):利用Alibaba Druid对数据库密码进行加密

Spring Boot(六十六):集成Alibaba Druid 连接池这章使用Alibaba Druid进行数据库密码加密,在上面的代码上进行修改,这章只介绍密码加密的步骤。目前越来越严的安全等级要求,我们在做产品研发和项目开发时,越来越需要注意安全问题,各种账号密码的在配置文件中明文存储就是一个很大的安全隐患。现针对数据库密码加密方面,利用druid进行数据库加密,实现项目配置文件中数据库密码密文存储,一定程度上保证了数据安全。

u013938578的博客 800

Druid监控页面配置用户密码、去除Ad

Druid监控页面配置用户密码、去除Ad。

Benjamin 1万+

SpringBoot整合Druid数据库连接池的方法

Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。这篇文章主要介绍了SpringBoot整合Druid数据库连接池的方法,需要的朋友可以参考下

深入解析:如何基于开源p-net快速开发Profinet从站服务

开源p-net协议栈为工业设备开发者打开了通往Profinet世界的大门。随着工业互联网的发展,软协议栈方案将在边缘计算领域展现更大潜力。该文章完整实现了PROFINET从站的核心功能,可直接作为产品开发的基础框架。实际部署时需根据具体硬件平台调整网络驱动和实时性配置。

极地星辰 3882

Spring Boot (四): Druid 连接池密码加密与监控

在上一篇文章《Spring Boot (三): ORM 框架 JPA 与连接池 Hikari》 我们介绍了 JPA 与连接池 Hikari 的整合使用,在国内使用比较多的连接池还有一个是阿里开源的 Druid 。本篇文章我们就来聊一聊 Druid 的一些使用姿势。 1. Druid 是什么? 我们先来看一下官方的回答: Druid 是 Java 语言中最好的数据库连接池。 Druid ...

极客挖掘机 1972

无需Root!安卓模拟器+BurpSuite轻松搞定微信小程序抓包

本文详细介绍了如何在不root安卓设备的情况下,使用安卓模拟器和BurpSuite实现微信小程序抓包。通过夜神模拟器降级安卓版本、配置BurpSuite代理及安装证书等步骤,开发者可以轻松绕过微信的证书绑定,高效抓取小程序数据包。文章还提供了常见问题排查和高阶技巧,帮助开发者提升抓包效率。

weixin_29213655的博客 365

十六,Spring Boot 整合 Druid 以及使用 Druid 监控功能

官方文档HiKariCP:是目前市场上非常优秀的数据源,是 Spring Boot2默认数据源。关于这一点的测试,大家可以移步至 ✏️✏️✏️十五,Spring Boot 整合连接数据库(详细配置)-优快云博客Druid:性能优秀,Druid提供的监控功能外{Java基础},还集成了SQL监控。可以清楚知道连接池和 SQL的工作情况。所以根据项目需要,我们也要掌握Druid和SpringBoot整合。Druid到 Spring-Boot方式:两种方式:自定义方式引入 starter 方式官方文档。

weixin_61635597的博客 4526

基于Dify1.9知识库流水线模板的思考——图像和表格数据处理

本文探讨了Dify1.9知识库流水线中LLM节点对文档图像/表格增强处理的优化方案。针对当前仅在内容后追加说明的简单做法,提出了结构化标注的改进方法:通过唯一ID和注释块标记图像/表格及其描述,确保内容可精准对齐。文章详细阐述了该方案的解析处理流程、数据结构化表示方法,以及在RAG检索和文档还原中的具体应用。关键经验包括:必须结构化标注非文本内容、LLM增强的必要性、语义向量化处理等。该方案解决了原始方法在内容重排、相似元素区分和检索精度等方面的问题。

roseey的专栏 1438

告别迷茫!手把手教你用ArcGIS+GTB搞定生态源地MSPA分析(附避坑指南)

本文详细介绍了如何使用ArcGIS和GTB进行生态源地MSPA分析的全流程,包括软件安装、数据预处理、参数设置、结果可视化和常见问题排查。特别针对ArcGIS和GTB组合使用时的常见问题提供了避坑指南,帮助研究者高效完成生态规划任务。

weixin_30756499的博客 435

深入Spring Boot (十六):从源码分析自动配置原理

切换Druid连接池在分析SpringBoot自动配置实现原理之前,先来看一下在使用SpringBoot开发的项目代码中如何将数据库连接池切换成Druid。对于数据库连接池的选择,Spr...

JavaQ 1534

【100%通过率】2024华为OD机试真题E卷 C++语言 实现【流浪地球】

流浪地球计划在赤道上均匀部署了N个转向发动机,按位置顺序编号为0~N-1。 1) 初始状态下所有的发动机都是未启动状态; 2) 发动机起动的方式分为“手动启动”和“关联启动”两种方式; 3) 如果在时刻1一个发动机被启动,下一个时刻2与之相邻的两个发动机就会被“关联启动”; 4) 如果准备启动某个发动机时,它已经被启动了,则什么都不用做; 5) 发动机0与发动机N-1是相邻; 地球联合政府准备挑选某些发动机在某些时刻进行“手动启动”,当然最终所有的发动机都会被启动。 哪些发动机最晚被启动呢?

MISAYAONE的博客 4212

springboot(十六)echarts报表的使用

前言: 在开发过程中少不了对报表的整合,虽然我们后端只提供数据,但是也避免不了自己来实现前端的可能。所以我们也得简单得了解下echarts的使用! 接下来我们完成查询数据库并让数据生成可视化的报表! 实现: 数据库:商品表 CREATE TABLE `product` ( `pid` int(11) NOT NULL A...

南城老猫 2806

YOLOv11 环境配置全流程 | 从零开始搭建训练与推理环境

YOLOv11环境配置与训练全流程指南 本文详细介绍了YOLOv11目标检测模型的环境配置、训练与推理全流程。内容包括: 环境要求:列出GPU、CUDA、Python等组件的版本要求,提供快速检查脚本 Windows配置: CUDA 12.6和cuDNN 8.9.7安装步骤 使用Conda创建隔离环境 PyTorch GPU版本安装方法 IDE环境配置 Linux配置:提供Ubuntu 22.04下的CUDA、cuDNN安装命令和Conda环境搭建 Docker方案:提供一键式容器化部署命令 训练实战: 数

shrgegrb的博客 2019

基于Simulink的PR(比例谐振)控制器在单相整流中的应用

本文详细介绍了基于Simulink的单相整流系统中PR(比例谐振)控制器的设计与实现方法。首先阐述了PR控制器相较于传统PI控制器的优势,能够有效消除交流信号跟踪中的稳态误差。接着系统讲解了PR控制器的传递函数原理、实用型设计(带带宽)及参数整定方法。通过Simulink建模步骤,包括主功率电路搭建、电压外环PI设计、电流指令生成、PR控制器实现(推荐MATLAB Function方法)和SPWM调制等关键环节。仿真对比显示PR控制在电流跟踪精度(THD仅1.9%)、功率因数(0.998)和动态响应(突变恢

amy_mhd的博客 691

SpringBoot非官方教程 | 终章:文章汇总

转载请标明出处: https://blog.csdn.net/forezp/article/details/70341818 本文出自方志朋的博客 SpringBoot非官方教程 | 终章:文章汇总 springboot非官方教程,可能最接近于官方的一个教程,大多数案例都来自于官方文档,为了更好的理解,加入了个人的改造。 码云下载:https://git.oschina...

方志朋的专栏 17万+

cefsharp139-H264-X86升级测试(MP4)-支持PDF预览-chromium7258定制浏览器

CEFSharp 139.x版本升级测试已完成,该版本支持64位系统(需选择x86架构)及WinForms.NETCore(.NET8)。升级内容包括H264文件编译支持Mp4播放,并覆盖WPF、WinForms等平台。文中提供了版本替换方法及不同系统的版本建议(如Win10/11推荐111/133/134/139版)。此外,文章还列举了CEFSharp的多种应用场景,包括浏览器开发、B/S系统封装、资源抓取等,同时指出当前版本均需自行编译以支持MP4播放。详细图文说明及旧版链接已附在正文中。

无线智能模块 可视DIY智能专家 1301

【springBoot】史上最全SpringBoot总结

文章目录一、SpringBoot介绍1.1 SpringBoot简介1.2 SpringBoot的特点1.3 SpringBoot的核心功能二、SpringBoot介绍三、SpringBoot快速入门四、SpringBoot热部署配置五、SpringBoot中的默认配置六、SpringBoot中的异常处理6.1 创建ExceptionController测试类6.2 创建自定义异常类6.3 创建MyExceptionHandler全局异常处理类七、SpringBoot中的过滤器(Listener操作同理).

九离的博客 283

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

springboot 第十六期 数据库开发

文章目录导入jdbc场景查询数据库使用Druiddruid官方github地址添加依赖把我们自定义的数据源给放到容器中去测试yaml文件添加配置使用MyBatis操作引入 导入jdbc场景 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</ar

qq_47431361的博客 3277

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【十九】Spring Boot之分布式事务(JTA、Atomikos、Druid、Mybatis)

一、介绍 1.分布式、本地事务 1.本地事务:普通事务。只能保证在一个数据库上的操作ACID。 JDBC事务就是本地事务,通过connection对象管理。 2.分布式事务:两个及以上数据库源的事务(由每台数据库的本地事务组成的), 使事务可以跨越多个数据库。比如,A库的a1表和B库的b1表,在一个事务中,如果B库的b1表回滚了,A库的a1表也要回滚。 JTA事务支持分布式事务。JTA指Ja...

很多时候犯错都是在不知情的情况下发生的 497

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SpringBoot笔记

spring boot其设计目的是用来简化Spring应用的搭建以及开发过程pom文件中的坐标是勾选添加的。开发SpringBoot程序可以根据向导进行联网快速制作运行SpringBoot程序通过运行Application程序入口进行。

2301_80098154的博客 1100

SpringBoot+微信小程序实现智能垃圾分类系统

垃圾分类是现代城市管理的重要环节,其核心在于通过技术手段提升分类准确性和用户便捷性。本文探讨的智能垃圾分类系统,结合了SpringBoot后端框架与微信小程序前端技术,实现了图像识别与规则引擎的双重分类机制。系统采用卷积神经网络(CNN)进行垃圾图片识别,并利用HanLP分词技术处理文本分类,通过Redis缓存优化响应速度。这种技术组合不仅解决了传统垃圾分类查询不便的问题,还为智慧城市建设提供了可扩展的解决方案。项目中的微信小程序相机API调用和SpringBoot微服务架构设计,特别适合需要实时图像处理的

weixin_30315435的博客 326

SpringBoot

一、 Spring Boot简介 SpringBoot本质是Spring Framework,Spring Framework主要作用就是整合其他技术。所以学习Spring Boot就是在学习如何整合其他技术。 二、 第一个基于Spring Boot的Spring MVC项目 1 配置依赖 在pom.xml中添加一个继承(主要目的:1. 配置文件 2. 插件3.依赖jar) 引入springmvc启动器 <parent> <groupId>org.springframewor

wyy的博客 504

两篇文章总结Springboot的基础知识---------加深印象------快速回顾--------下(篇)

文章目录前言十六、与数据交互-mybatis(注解版)十七、idea与数据交互-mybatis(配置文件版)同理写三层:十八、开启分页十九、切换自定义连接池druid二十、springboot集成redis二十一、实现redis的session共享二十二、封装返回对象二十三、开启登录拦截二十四、日志二十五、集成调试工具swagger2写在最后 前言 接着上一篇Springboot总结一下基础知识点。 两篇文章总结Springboot的基础知识---------加深印象------快速回顾--------.

海海不掉头发的的博客 284
上一篇: 十五 Springboot-配置Spring事务
下一篇: 十七 Springboot-日志支持
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值