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日

相关推荐

  • 广西大学和近畿大学哪个好

    澎湃新闻(www.thepaper.cn)思想新闻中心 6月,伴随着潮湿闷热的黄梅天,上海国际电影节又来了。这是澎湃新闻思想新闻中心的编辑们最近在读或者读完的书,分享给大家,希望大家在观影的同时,也能读到一些好书。愿所有人寻找到自己的天堂电影院,找到一片安宁的栖息之地。 《八十年来翰墨缘:米景扬口述》 张龙翔/著,北京出版社,2021年1月版 推荐人:郑诗亮…

    2024年10月14日
  • 美国大使馆签证处_美国大使馆签证处地址

    美国驻华大使馆和领事馆领区: ⏬美国驻华大使馆: 北京,天津,甘肃,河北,内蒙古,宁夏,青海,山西,山东,陕西,新疆,重庆,贵州,四川,云南,西藏 ⏬美国驻广州总领事馆: 福建,广西,广东,海南 ⏬美国驻上海总领事馆: 上海,安徽,江苏,浙江 ⏬美国驻沈阳总领事馆: 黑龙江,吉林,辽宁 ⏬美国驻武汉总领事馆: 河南,湖南,湖北,江西 ♎美国签证免面试代传递各…

    2024年3月12日
  • 美国理科大学排名

    你盯着QS排名刷到凌晨两点,我懂你:不是闲得慌,是怕一闭眼就错过“能翻身”的那张船票。 \r\r MIT把国防部2亿美元塞进量子+AI的口袋,斯坦福干脆把OpenAI搬进本科课表,这哪是新闻,分明在冲我们喊——再不上车,连尾灯都看不见。 \r\r 先别急着抄“保底校清单”。 \r 我去年帮一个广东学员申伯克利,他GRE只有319,却靠“半导体+法律”交叉项目…

    2025年10月20日
  • 德国医学博士申请条件

    德国博士申请攻略:开启学术新征程 在学术的浩瀚星空中,德国以其卓越的科研实力和深厚的学术底蕴,吸引着无数莘莘学子前往攻读博士学位。那么,德国的博士究竟该如何申请呢?今天就为大家详细揭秘。 前期准备:知己知彼 申请德国博士,前期的充分准备至关重要。首先,你要明确自己的研究方向。德国的博士培养注重专业性和深度,只有确定了清晰的研究方向,才能有针对性地寻找合适的导…

    2025年11月6日
  • 澳洲纽卡斯尔大学申请条件家考

     纽卡斯尔大学简称纽大,是位于英国英格兰东北部的世界一流大学,著名公立大学、老牌名校。长久以来被认为是英国最好的20所大学之一,纽大是英国罗素大学集团成员,N8大学联盟成员,欧洲大学工会(EUA)以及英联邦大学(ACU)、英日RENKEI成员。如此优秀的纽卡斯尔大学,一直以来都是众多留学生的选择。申请纽卡斯尔大学,你需要明白的都在这里。接下来就跟着云学教育集…

    2025年9月10日
  • 世界大学经济学排名

    想学经济学的同学,选校时各种排名是不是让你犯了难?今天咱们聊聊经济学全球Top100大学的排名规则、梯队分布,让你选校不迷茫。 排名咋算的?三个维度说了算 经济学是社会科学和商业管理的交叉学科,这次的排名是“商业与经济全球大学综合排名”的子集,参考了三个权威榜单: – QS经济学与计量经济学排名:看的是全球声誉和雇主认可度,说白了就是学校在国际上…

    2025年10月28日
  • 加拿大感恩节(加拿大感恩节是几月几号)

    加拿大是个充满生机的国家,有各种各样的节日可以庆祝。 新年(January 1st): 新年是一个全球性的节日,加拿大也不例外。在这一天,人们会庆祝过去一年的成就和展望新的一年。烟火、倒数计时、派对等活动成为了新年的标志,让人们在欢乐中迎接新的一年。 复活节(Easter): 复活节通常在四月份庆祝,它是一个家庭团聚的节日,许多加拿大人会组织狩猎彩蛋和分享巧…

    2023年10月14日
  • 北卡罗莱纳大学排名

    美国北卡罗来纳州立大学在2020年《美国新闻与世界报道》美国全国性大学排名中排名第84名,在2020年QS世界大学排名中排名第285名。 北卡罗来纳州立大学专业排名 QS世界大学材料科学专业排名 2019年 第101名 QS世界大学数学专业排名 2019年 第251名 QS世界大学物理与天文专业排名 2019年 第251名 QS世界大学计算机科学与信息系统专…

    2025年1月5日
  • 巴塞罗那自治大学世界排名_巴塞罗那自治大学世界排名是多少

    巴塞罗那自治大学成立于1968年,学校成立之初共有四个学院,即哲学与艺术学院,医学院,科学学院和经济学院。随着学校的发展壮大,学校相继建立了法学院,信息技术学院,笔译与口译学院等学院。巴塞罗那自治大学现在共有13个学院,开设81个本科项目,84个硕士项目,67个博士项目,英文授课硕士项目占全校硕士项目的四分之一。 在QS世界大学排行榜上,排名第149名,较去…

    2024年3月20日
  • 211大学有哪些好处

    “别嫌阿姨啰嗦,真的是有太多的放心不下。外卖虽然方便,总不如自己做的营养健康,熬夜加班的时候别总拿泡面凑合。难过委屈了,千万别一人扛着……” 近日,延边大学毕业典礼上食堂阿姨刘晓梅这段“没有套路,全是感情”的发言爆火全网,让台下的毕业生觉得哈特软软,也让很多网友被阿姨的朴实真情打动。 图源:抖音@延边大学 有网友说,“这是校园人文关怀的具象化,是毕业游子日后…

    2025年8月28日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信