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日

相关推荐

  • 克瑞顿大学野鸡大学

    棕榈说:又到一年考验美国高校本科教学质量的时候了! 近日,U.S. News终于发布了最新的全美大学本科教学质量排名。 结果看得棕榈君目瞪口呆。 非常多我们认为的好大学被挤进角落摸都摸不着;一大批我们觉得很一般、甚至听都没有听说过的大学横空出世,在教学质量排名中挤进前五,向我们彰显它的教学实力。 那变化叫一个精彩。 所以,有哪些大学上榜?你的梦校教学质量如何…

    2024年11月14日
  • 麻省理工大学金融硕士案例

    ►前言: 双节假期结束,案例分享也如期归来~差不多就在去年的这个时候,Estelle学员才刚刚开始准备申研,可到了十月中下旬,大部分英国项目的round 1都已经结束,好在听取了最强辅助Smart的建议,及时补申了剑桥金融,在经历了LBS受挫后也没有轻言放弃。来看看K学长如何帮助她文书成型,最终进入全球第二的吧~ ►学员介绍: 姓名:Estelle 即将要去…

    2024年11月24日
  • 德克萨斯州(德克萨斯州在美国的什么位置)

    德克萨斯州拥有强大的工业科技基础,石油业,电子业,金融业,航空航天业都非常发达,全美最大的20家石油巨头的19家总部都在德克萨斯。德州的几个大都会城市并驾齐驱,发展非常均衡,其中包括休斯顿,奥斯汀,达拉斯,伍德沃斯,圣安东尼奥等大都会。 1)德克萨斯州没有州所得税,赚的钱不要交给州政府。 2)德克萨斯州不是处于地震带,而加州是处于活跃的地震带。 3)德克萨斯…

    2023年11月6日
  • 格拉斯哥大学和金斯顿大学

    前不久,英国网站StudentCrowd发布了全英学生住宿最便宜城市排行榜Cheapest UK Cities for Student Accommodation。 该榜单根据StudentCrowd的实时住宿数据,从低到高汇总了全英 70多个大学所在城市的租房费用。租金最低的10所城市是它们↓ 可以看出,租金最低的城市,大多是知名度不高的小众留学城市。 大…

    2024年11月16日
  • 国内大学图书馆排名

    哪些高等学校是2024中国图书馆学专业最具综合竞争力的大学? 武汉大学名列2024中国大学图书馆学专业排名(研究型)冠军鞍山师范学院、西北大学现代学院雄居2024中国大学图书馆学专业排名(应用型)首位

    2024年8月27日
  • 英国留学热门专业(英国留学热门专业排名)

    24Fall申请季已经开始啦!同学们是否已经确定了自己的留学国家和院校呢? 近年来,越来越多的同学选择英国作为他们的留学目的地。今天,汇英为大家整理一下英国留学中热门的专业以及相应的申请要求,一起来看看吧! 金融专业 作为世界金融中心,英国的金融专业自然也备受国际学生的青睐。 成绩要求: 1、GPA要求绩点3.0-3.8,不同院校要求有所区别。 2、语言要求…

    2023年9月19日
  • 金陵河西分校(南京金陵河西分校)

    近日,江苏省教育厅、 省工业和信息化厅联合发文, 公布2022年“江苏省智慧校园示范校” 审核认定结果。 金陵中学河西分校 以综合评分全省初中组第一名的成绩 获评这一殊荣, 成为全南京5所上榜学校之一。 全省第一获殊荣 “江苏省智慧校园示范校”由江苏省教育厅、省工业和信息化厅联合组织审核评定,经学校自评申报、省级审核、网络评选、现场答辩等多个环节评选产生,“…

    2023年9月21日
  • 韩国亚洲大学(韩国亚洲大学世界排名)

    2023年QS排名涵盖了760所亚洲大学,这也是迄今为止最大的一次亚洲大学排名。 首先看下韩国大学入围名单: 与2022年亚洲大学相比,KAIST升至韩国第1,去年排名14升至第8名;延世大学去年16名升至12名排名韩国第2;高丽大学去年13名下降2位,排名韩国第3名;首尔大学上升1位排名韩国第4;成均馆大学下降1位排名韩国第5名。 亚洲前100名大学名单:…

    2023年10月16日
  • 弗吉尼亚州有哪些大学

    美国的“总统之乡”,留学都有哪些好机会? 弗吉尼亚州的好大学有哪些? 首先,就是上面提到的——弗吉尼亚大学(University of Virginia,UVA),这是美国最好的公立大学之一,U.S.News综合排名位列全美前30。 UVA坐落于美丽的大学城夏洛茨维尔,开车到美国首都华盛顿大约2.5小时。 其优势专业是文科,同时工程类、商科和生物医学在全美也…

    2024年4月21日
  • 欧洲常春藤联盟大学

    常青藤大学是什么意思? “常青藤大学”(Ivy League)是指美国八所顶尖私立研究型大学的非正式联盟。这些学校因其卓越的学术声誉、悠久的历史、严格的录取标准以及在教育、科研和社会领域的卓越贡献而闻名于世。 常青藤大学的起源 “常青藤联盟”这一名称源自1937年一位体育记者的报道,他用“常青藤联盟”来形容这些学校之间紧密的体育竞赛关系。后来,这一名称逐渐被…

    2025年4月7日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信