mybatis英语发音

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

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

1 集成 Druid

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

纯 yml 方式:在 yml 中配置连接池信息和druid 有关参数即可;Java Config 方式:编写配置类,在配置类中创建 druid 所需的实例,通过注解 @configuration 集成 Druid;注解方式:通过 @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 连接池配置的部分参数解析:

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

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

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

声明:壹贝网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者wangteng@admin所有,原文出处。若您的权利被侵害,请联系 756005163@qq.com 删除。

本文链接:https://www.ebaa.cn/12221.html

(0)
上一篇 2024年1月5日
下一篇 2024年1月5日

相关推荐

  • 出国留学英语(出国留学英语要达到什么水平)

    想要出国留学,语言关一定要过,尤其是英语,这可以说是为了准备出国最耗费精力和时间的了,语言成绩的高低,决定着你是否能申请到一个好的院校,语言能力的好坏,决定着你是否能够在国外与人正常的交流,是否能够在国外正常的生活。那么出国留学英语语言类考试都有哪些呢?跟思润小编一起来看看吧! 雅思 就思润的学员来看,报考雅思的应该是最多的了。雅思考试是为那些打算在以英语作…

    2023年11月21日
  • 鲁汶大学排名世界第几

    以下排名主要参考自QS世界大学排名(截至2025年4月),仅罗列世界排名前100位的各国最高排名学校。 (美国)麻省理工学院(世界排名第1位)莎莉·科恩布鲁斯(Sally Kornbluth)1960年出生于新泽西州帕特森(美国),本科毕业于威廉姆斯学院(美国)和剑桥大学(英国),拥有洛克菲勒大学(美国)肿瘤学博士学位,2023年1月就任校长一职。 (英国)…

    2025年5月14日
  • 大数据专业排名_大数据专业排名学校

    今日,中国大学排行榜官网(CNUR)正式发布了2024年中国大学数据科学与大数据技术专业排名及评级结果,供24考生择校参考!快来了解一下吧~ 排名如下: END

    2024年4月2日
  • 法国大学排名_法国大学排名前十名

    #秋日生活打卡季# 2023法国知名的十所大学排行 法国知名大学排名第一的是巴黎高等师范学院,排名第二的是巴黎综合理工大学,排名第三的是里昂高等师范学院。 2024法国大学QS排名榜前十 QS法国大学排名第一的是巴黎科学艺术人文大学,排名第二的是巴黎理工学院,排名第三的是索邦大学。 2023法国大学泰晤士排名榜前十 泰晤士法国大学排名位列第一的是巴黎文理研究…

    2024年3月1日
  • 全球美术学院排名

    法国十大艺术名校包括‌巴黎国立高等美术学院(ENSBA)‌、‌凡尔赛高等装饰艺术学院(ESADV)‌、‌里昂国立高等美术学院(ENSBA Lyon)‌、‌巴黎高等装饰艺术学院(ENSAD)‌、‌巴黎国立高等音乐舞蹈学院(CNSMDP)‌、‌高布兰学院(Gobelins)‌、‌ESMOD国际服装设计学院‌、‌法国国立高等工业设计学院(ENSCI-Les Ate…

    2025年11月7日
  • 公立阿尔卡拉大学_公立阿尔卡拉大学有哪些

    【西班牙名校国际生占比】 我们看到,西班牙排名靠前的大学,国际生占比在10%-15%左右。也就是说,每100个学生,就有10个来自其它国家。公立学校中,阿尔卡拉大学国际生比例最高,占比达到24%。私立大学国际学生的占比相对公立更高,多所私立大学占比超20%。 国际生占比最高的四所公立学校是:阿尔卡拉大学、萨拉曼卡大学、巴塞罗那自治大学与马德里理工大学。 阿尔…

    2024年2月26日
  • 诺丁汉大学bh住宿_诺丁汉大学住宿费

    英文名:The University of Nottingham 院校地址:英国 – 英格兰 – 诺丁汉 创建时间:1881年 网址:https://www.nottingham.ac.uk 2022年QS排名:103 2022年TIMES排名:141 简介 诺丁汉大学(University of Nottingham)是英国一所大型…

    2024年3月1日
  • 英国私校排名_英国私校排名前100位

    英国最实惠、性价比最高的私校都有谁? 近日,《每日电讯报》基于对2023/24学年学费和2022年GCSEs/A-Levels成绩的相关性分析,在入围的400个私校中评选出了英国性价比最高(学费便宜且成绩好)的10大私校。 统计显示,入围前10的私校没有1所位于英国九大公学之列,而且90%的学校都不在伦敦。 英国性价比最高的私校榜单如下: 如上图所示,位于曼…

    2024年4月17日
  • 哈佛大学是公办的吗_哈佛大学是公办的吗还是民办

    文|2号探秘人 编辑|2号探秘人 之前我们盘点了国内风景好的10所大学,今天我们来看看世界顶级的名校是什么样子的,看看它们的建筑风格,以及学习氛围。 01 麻省理工学院 美国波士顿 麻省理工学院位于美国东北部马萨诸塞州波士顿,一说到波士顿,大家就会想到波士顿龙虾。 而波士顿不仅在美食上出名,世界名校也让它出尽了风头。 波士顿学院,麻省理工学院,哈佛大学都在波…

    2024年3月4日
  • 城西国际大学贵不贵

    来源:央视财经 近期,日本兵库县姬路市、大阪府等地纷纷提出,计划上调当地部分热门旅游景点外国游客的门票价格,这在当地引发了广泛关注,也引发一定争议。 目前,日本兵库县姬路市正在讨论对姬路城的门票实施“双标价”,将外国游客的门票价格上调至本地人的四倍。不少外国游客对此看法不一,在当地也引起了一定的争议。 外国游客:作为一个游客,对门票“双标价”可能会感觉有点不…

    2024年11月29日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信