springboot配置 Druid 数据源及密码加密

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

在SpringBoot中配置 Druid 数据源及密码加密的方法

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

1 集成 Druid

在 Spring Boot 中集成 Druid 可通过三种方式实现:

  1. 纯 yml 方式:在 yml 中配置连接池信息和druid 有关参数即可;
  2. Java Config 方式:编写配置类,在配置类中创建 druid 所需的实例,通过注解 @configuration 集成 Druid;
  3. 注解方式:通过 @WebServlet、WebFilter、@ServletComponentScan等注解集成。

如果使用到多数据源,需要采用后面两种方式来配置。我们这个demo里面只有一个数据源,使用 yml 方式配置就行了。

1.1 添加依赖

Druid 与 Spring Boot 整合可以使用封装好的 starter: druid-spring-boot-starter。

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

1.2 配置 yml

在 application.yml 文件中,前面已经配置了数据源的驱动(driver-class-name)、连接地址(url)、用户名(username)、密码(password),现在需要追追加连接池类型配置、druid 连接池参数配置、druid 监控页面配置。

最后 spring.datasource 的配置如下:

spring:  datasource:    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://127.0.0.1:3306/hero_springboot_demo?useUnicode=true&characterEncoding=utf8&useSSL=true    username: root    password: Mysql.123    # 指定数据源为 DruidDataSource,默认值为 HikariDataSource    type: com.alibaba.druid.pool.DruidDataSource    druid:      initial-size: 5      min-idle: 5      max-active: 5      max-wait: 30000      min-evictable-idle-time-millis: 30000      time-between-eviction-runs-millis: 30000      validation-query: SELECT 1 FROM DUAL      test-while-idle: true      test-on-borrow: false      test-on-return: false      pool-prepared-statements: true      max-pool-prepared-statement-per-connection-size: 5      filters: stat,wall      use-global-data-source-stat: true      stat-view-servlet:        enabled: true        url-pattern: /druid/*        login-username: admin        login-password: 111111      web-stat-filter:        enabled: true        url-pattern: /*        exclusions: /druid/*, *.js, *.jpeg, *.jpg, *.png, *.gif, *.css      filter:        stat:          merge-sql: true          slow-sql-millis: 3000          log-slow-sql: true

Druid 连接池配置的部分参数解析:

  1. initial-size:连接池初始化时创建的连接数量。
  2. min-idle:连接的最小空闲数量。
  3. max-active:最大活跃的连接数量。
  4. max-wait:等待超时时间。当遇到 DB 操作时,如果连接池中活跃的连接达到 max-active 就会等待,等待超过 max-wait 就会报错。
  5. min-evictable-idle-time-millis:连接允许的最大空闲时长(回收空闲连接的最小时长)
  6. time-between-eviction-runs-millis:多久检测一次连接池里连接的空闲时长
  7. validation-query:检测连接是否有效的 SQL
  8. filters:配置 druid 的扩展插件。stat - 用于监控统计的filter;wall - 用于预防 SQL 注入的filter。其他还有 log4j、config。
  9. filter:配置过滤器的参数:filter.stat.merge-sql:是否开启 mergeSQL的功能;filter.stat.slow-sql-millis:超过多久才是慢SQL
  10. stat-view-servlet 和 web-stat-filter 用于配置监控页面的 servlet 和 filter

想在浏览器中访问监控统计页面,stat-view-servlet.enabled 和 web-stat-filter.enable 都需要配置为 true。

配置完成后,在浏览器中访问:(前面已配置 stat-view-servlet.url-pattern 为 /druid/)

http://localhost:9099/druid/

输入 stat-view-servlet 配置的 login-username 和 login-password,进入 druid 的监控统计页面

2 配置文件密码加密

在上面的数据源的配置中,数据库密码(spring.datasource.password)明文存储。在现实企业级开发中,通常采用配置中心的方式来解决。配置文件存储在配置中心上,而配置中心有权限控制,敏感环境(UAT、生产环境等)的配置文件只有特定人员或特定环境能够访问。但是如果无论什么环境,都对密码加密,是非常有必要的操作。

由于已经集成了 druid,可以使用 druid 提供的 ConfigTools 来进行加密,该类采用非对称方式加密。咱使用单元测试类来生成公钥、私钥、加密后的密码。新建一个单元测试类 com.yygnb.demo.ConfigToolsTest:

package com.yygnb.demo;import org.junit.Test;import static com.alibaba.druid.filter.config.ConfigTools.encrypt;import static com.alibaba.druid.filter.config.ConfigTools.genKeyPair;public class ConfigToolsTest {    @Test    public void testPassword() throws Exception {        String password = "Mysql.123";        String[] arr = genKeyPair(512);        System.out.println("privateKey:" + arr[0]);        System.out.println("publicKey:" + arr[1]);        System.out.println("password:" + encrypt(arr[0], password));    }}

将该方法中的变量 password 值替换成你自己的密码。执行该单元测试,会在控制台中分别输出私钥 privateKey、公钥publicKey 和加密后的密码 password:

  1. 修改配置 spring.datasource.password ,值为上面的生成的加密后的密码
  2. 添加公钥配置 publicKey,值为上面生成的公钥
  3. 添加连接属性配置 spring.datasource.druid.connection-properties,值为:config.decrypt=true;config.decrypt.key=${publicKey}
  4. 启用配置 spring.datasource.druid.filter.config.enabled,值为 true

如果重启成功,则加密成功。此时如果将密码或公钥修改为错误的、或者 pring.datasource.druid.filter.config.enabled 设置 false,服务都会启动失败。

Spring Boot项目配置Druid数据源(druid-spring-boot-starter) Druid是阿里巴巴的一个开源项目,号称为监控而生的数据库连接池,在功能、性能、扩展性方面都超过其他例如DBCP、C3P0、BoneCP、Proxool、JBoss DataSource等连接池,而且Druid已经在阿里巴巴部署了超过600个应用,通过了极为严格的考验,这才收获了大家的青睐!Apache Druid(Incubating) - 面向列的分布式数据存储,非常适合为交互式应用程序提供动力,开发中使用的更多。以往我们都是直接引入Druid的依赖: apache中已经出了一套完美支持 阅读详情

相关推荐

在Spring Boot中使用Druid数据库连接池

文章目录在Spring Boot中使用Druid数据库连接池前言引入Spring Boot Druid Starter配置Druid数据库连接池加密数据库密码日志监控参考文档 在Spring Boot中使用Druid数据库连接池 前言 在 使用IDEA开发Spring Data JPA for MySQL 一文中我们使用了Spring Data JPA来访问MySQL数据库,而在真实环境中,为了性...

锐意工作室 6419

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

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

Benjamin 1万+

配置 Druid 数据源及密码加密-SpringBoot 实战基础

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

m0_67698950的博客 954

spring boot配置druid(德鲁伊)

spring boot配置druid(德鲁伊)关于druid的介绍请看 阿里巴巴温少访谈1.引入相关依赖,全部依赖是上一篇spring boot+mybatis依赖的基础上,再加上下边的依赖,如下: <!-- Druid数据库连接池组件 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifa

凌大大的博客 2万+

springboot + druid-spring-boot-starter + mysql 实现动态多数据源

*** 多数据源注解,可以在方法和类添加该注解*/// 数据源类型@Override// 公共key// 加密密码// 解密密码// 设置密码// 加密// 解密try{LOGGER.info("解密失败!{}",e);

sdfsfaffs的博客 1281

别再硬编码密码了!Spring Boot多数据源配置加密,看这一篇就够了(dynamic-datasource + Druid)

本文详细介绍了Spring Boot多数据源配置加密的最佳实践,结合dynamic-datasource和Druid实现数据库密码的安全管理。通过对比默认加密方案与自定义密钥方案,提供生产环境下的配置指南和高级技巧,帮助开发者有效防范数据泄露风险,提升企业级应用的安全性。

weixin_33501543的博客 335

spring boot整合druid,多数据源配置,密码加密

目录数据库整合添加依赖并进行简单配置如何配置多数据源如何进行密码加密 数据库整合 添加依赖并进行简单配置 添加依赖 Maven <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId>...

开发能力提升中。。。。 1644

Elsevier期刊LaTeX双栏模板(cas-dc)实战:从Overleaf配置到投稿全流程

本文详细介绍了Elsevier期刊LaTeX双栏模板(cas-dc)在Overleaf平台上的配置与使用全流程,包括模板结构解析、标题与作者信息规范、摘要与关键词特殊格式、正文写作技巧、参考文献管理以及投稿前检查清单。特别针对Elsevier期刊投稿需求,提供了从模板安装到最终投稿的实用指南,帮助研究者高效完成论文排版工作。

weixin_28455801的博客 1323

配置 Druid 数据源及密码加密-SpringBoot 2.7

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

萌兔兔MMQ!! 1077

tecplot 通过数据点、坐标点绘制云图、三维云图

使用坐标点绘制二维云图或三维云图

medicalmask的博客 3万+

从Reset到Read:深入解析Rolling Shutter曝光流水线

本文深入解析Rolling Shutter(卷帘曝光)的工作原理,重点探讨Reset和Read信号在图像传感器中的关键作用。通过Reset-Read流水线机制,详细解释了曝光控制、时序调优及运动伪影补偿等核心技术,帮助读者理解卷帘曝光在高速摄影和动态场景中的应用。

weixin_42531925的博客 253

springboot中druid数据源配置文件密码加密显示

运维和DBA都不希望把密码明文直接写在项目配置文件中,Druid提供了数据库密码加密的功能,一种数据库密码加密的手段ConfigFilter。   引入jar &lt;dependency&gt; &lt;groupId&gt;com.alibaba&lt;/groupId&gt; &lt;artifactId&gt;druid-spring-boot-starter...

余一叶知秋尽 1万+

门信号表达式_毫米波FMCW体制雷达的信号处理中的FFT等效为相干积累的解释

民用的77G或24G毫米波雷达目前普遍采用发射波形为一连串线性调频连续波(即所谓chirp信号,啁啾信号,线性调频波如果能够下变频到人耳可接收的频段,听起来很类似“啁啾”“啁啾”的鸟叫声)。一串前后相继的chirp信号与一段长时间的“空闲”组成一帧信号(比如汽车雷达整机厂普遍采用一帧为50ms)。用频谱仪观察chirp信号串,横坐标为时间,纵坐标为频率,如下图所示(此处引用TI产品手册...

weixin_39725756的博客 1948

Springboot项目结合druid加密配置数据源连接的用户密码

dynamic-datasource集成druid连接池,并且使用druid加密数据源的用户密码信息

小蜜蜂1010的博客 3219

Flutter 自适应布局一套代码适配手机和平板(12)

通过LayoutBuilder组件动态检测屏幕尺寸,根据宽度阈值(600px)选择不同布局方式。在小屏幕上显示单页联系人分组,大屏幕采用侧边栏+详情面板的并排布局。核心实现包括:1)使用LayoutBuilder获取父容器约束条件;2)定义大屏幕和小屏幕的布局断点;3)构建响应式界面组件,其中大屏幕布局采用Row横向排列固定宽度侧边栏和弹性宽度的详情区域。这种方案可确保应用在不同设备上都能提供最佳显示效果。

hello.reader 315

Ubuntu Rtx3090 Cuda11.7 安装 pytorch3d

pytorch ubuntu pytorch3d 安装

G果的博客 2272

Springboot集成Druid配置多数据源:数据库密码加密后导致数据连接异常问题解决方案

一、问题描述 springboot集成druid配置多数据源情况下,数据库密码加密访问时会出现连接异常问题,具体报错如下: 二、问题分析 如果是单数据源的话druid是自带解密的,但是多数据源的情况下druid不会使用默认的加载方法,多数据源还是需要手动解密的。 通过断点调试,发现步骤三中的解决方案是靠谱有效,关键断点截图如下: 由此可分析自定义DruidPasswordCall...

阳光的专栏 5045

CondaHTTPError: HTTP 404 not found for url https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs解决方案

本文主要介绍了CondaHTTPError: HTTP 404 not found for url https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main解决方案,希望能对使用xx的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 17万+

Druid数据库密码加密

配置 connection-properties,启用加密,配置公钥。public-key: 密文。# 生成的加密后的密码(原密码 password)password: 密文。# 启用ConfigFilter。# spring配置。

sxlishaobin的博客 2023

RPA与旅游与酒店行业自动化实战案例

1. 背景介绍 1.1 旅游与酒店行业的挑战 旅游与酒店行业是一个高度竞争的市场,企业需要不断提高服务质量、降低成本、提高效率以保持竞争力。在这个过程中,企业面临着诸多挑战,如客户需求多样化、市场变化快速、人力资源成本高昂等。为了应对这些挑战,企业需要寻求新的技术手段来提高运营效率。

AI天才研究院 615

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【使用druid连接池对配置文件密码进行加密 】

一.使用druid连接池对配置文件密码进行加密 ① maven依赖jar包② 检查jar包是否引入到工程中,并打开jar包目录③ 点击jar包 --> 右键 show in Expolere 打开找到本地磁盘目录④ 如果是win10 点击右键打开powershell 命令窗口. 我是win7系统 只能在该路径上手动输入powershell 命令 按下enter 回车键⑤ 打开命令窗口后 我们执行 命令进行密码加密-加密后privatekey 为私钥, publicKey 公钥 ,password 为你

googlilk的博客 3139

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Spring boot+Druid+多数据源 +密码加密

1、添加MAVEN依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency&g...

yanqi_hz的博客 4309

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

使用Druid数据源对数据库连接密码加密

前言: 运维和DBA都不希望把密码明文直接写在配置文件中,Druid提供了数据库密码加密的功能。 我在使用Springboot整合Quartz的时候使用了Druid数据源(Springboot整合Quartz集群部署以及配置Druid数据源),本案例就使用那个案例作为基础,其实数据库连接密码加密跟Quartz无关,只是我懒,只修改Druid部分。 开始: 1、以前项目本来就有Druid依赖...

Coding Farmer的博客 3300

一步一步学SpringBoot(四)---德鲁伊(Druid)对数据库密码加密

数据库密码加密 首先用命令行进入druid-1.1.0.jar所在的目录 再执行以下命令运行代码对密码进行加密 输入你的密码 java -cp druid-1.1.0.jar com.alibaba.druid.filter.config.ConfigTools you_password 执行完输出以下数据 privateKey:MIIBVgIBADANBgkqhkiG9w0BAQEFAASCA...

可乐止饱 2022

springboot中配置druid,并加密数据库密码

druid我使用的版本是1.1.10,数据源postgresql 目标是通过application.yml自动装配DruidDataSource并完成数据库密码的自动解密 DruidDatasource初始化代码如下 @Bean(name = "druidDataSource", autowire = Autowire.NO, initMethod = "init") @Primary @ConfigurationProperties(prefix="spring.da.

songduo22的博客 2659

MyBatis - 使用示例(四)SpringBoot配置数据库密码加密

MyBatis - 使用示例(四)SpringBoot配置数据库密码加密 前面三篇文章简单的示意了下MyBatis和Spring以及SpringBoot的整合。本文讲一下如何在SpringBoot下配置数据库密码加密。 一、借助Druid数据源配置数据库密码加密 Druid 数据源支持数据库密码进行加密,在 Spring Boot 中配置方式如下: 加密数据库密码,通过 Druid 的 com.alibaba.druid.filter.config.ConfigTools 工具类对数据库密码进行加密(R

Zack_tzh的博客 3万+
上一篇: java中面向对象三大特性有哪些?
下一篇: ThreadPoolExecutor 源码分析
Java_ttcd
博客等级 码龄4年 198粉丝 190原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值