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日

相关推荐

  • OpenAI首席运营官谈ChatGPT、AI发展方向、公司内部问题

    OpenAI首席运营官Brad Lightcap近日接受媒体采访,对ChatGPT、人工智能行业,以及公司运营细节进行了说明。 Lightcap声称,对于人工智能聊天机器人ChatGPT是否应该发布,公司对此进行了反复讨论,花了很多时间,因为不能100%确定这是正确的事情。不过首席执行官奥特曼支持发布,他认为与大模型进行基于文本的交互需要有一些重要的和个人的…

    2023年12月13日
  • 加拿大最好毕业的大学

    近期,《麦考林》杂志公布了加拿大名校学生的毕业率(见下表),它是根据统计自2013年秋季入学的学生在七年内的毕业率而得来。 大学名称 毕业比例 Queen's女王大学 90.0% Sherbrooke谢布鲁克大学 89.2% Western西安大略大学 86.4% Laval拉瓦尔大学 85.8% McGill麦吉尔大学 84.8% Waterlo…

    2024年12月21日
  • 广东外贸外语大学公开学院

    一、学院介绍: 广东外语外贸大学公开学院是1999年6月创办的一种新型办学组织,尝试普通高校“宽进严出”、向社会公开招收自学考试学员进行全日制培养的新路子。办学近二十年,成功地建立起全日制高等开放教育新品牌,为自学考试考生实现大学梦搭建了良好的平台,为广东省乃至全国的自考助学提供了新模式新思路。学院于2004年被教育部高等教育自学考试办公室评为“全国高等教育…

    2024年11月6日
  • 南安普顿大学2023年博士学费

    南安普顿大学不同课程的学费不同,本科课程学费约2.2万英镑-2.9万英镑,约合人民币20万元-27万元;研究生课程学费约2.4万英镑-3.4万英镑,约合人民币23万元-31万元。部分医科专业较贵,如BMBS临床课程可达56600英镑,约合人民币52.8万元/年。 以下是2025年南安普顿大学一年学费盘点—— 一、本科学费 1、大部分课程学费为22300英镑-…

    2024年12月28日
  • 宾西法利亚大学排名

    前言:这是一篇来自公众号达恩留学有关于宾夕法尼亚大学含金量与申请策略的文章,一文带你扫清申请盲区! 宾夕法尼亚大学(University of Pennsylvania),位于美国宾夕法尼亚州的费城,是一所享有盛誉的私立研究型大学。作为常春藤盟校之一,宾夕法尼亚大学在多个国际大学排名中表现优异。 那么,这个学校实力究竟如何?怎样稳妥申请上岸? 一、近几年各大…

    2024年12月14日
  • 美国万尔德齐肯大学排名

    又到了高考放榜的时候。 曾经,“上清华还是上北大”这个问题困扰了澎澎18年,直到成绩公布的那一刻,他才放手释怀,方知把这种“难题”丢给那些高考状元就好了,何必什么事都亲力亲为? 没有了这些顾虑的澎澎,后来终于上了一所听起来很洋气的大学——万尔德齐肯大学(wild chicken university) 但最近,听上去很土的“双鸭山大学”走红网络。和万尔德齐肯…

    2024年9月14日
  • 麻省理工申请条件(麻省理工申请条件和费用)

    中国人想进麻省理工学院,可以说是非常难的。麻省理工学院是全球最著名的理工科学府之一,其申请竞争十分激烈。 每年都有大量的申请人来申请麻省理工学院,而且许多申请人的成绩都非常优异,这就造成了申请竞争的激烈程度。 除了成绩之外,麻省理工学院还非常注重申请人的综合素质,包括学术成就、课外活动、领导力、创新能力等方面。申请人需要有出色的学术表现,同时也需要展现出自己…

    2023年10月24日
  • 加州大学伯克利分校分数线

    加州大学伯克利分校(University of California at Berkeley, 简称UCB)是最受美国留学生关注的美国公立名校了,本科生录取的中国留学生人数每年在400左右,在美国前30名校中,属于录取人数较多的样本,因此做个全面的录取数据分析,挺有意义。 一 2020级新生申请录取数据 加州伯克利作为全美最顶级的公立大学,申请难度当然比较大…

    2024年11月23日
  • 金吉列留学(金吉列留学在线咨询)

    用真诚的服务打造留学行业旗舰品牌。 北京刚刚经历了几场大雨,暂时的凉爽让人们终于能在炎炎夏日中得到片刻喘息。6月,在一个晴朗无云的午后,《留学》杂志记者与金吉列留学董事长兼总裁郑应文进行了面对面交流,“我刚刚结束了上午的会议,就赶来这里了。”采访之初郑应文这样说道,如师长般亲切的语气体现出作为山东人的好客与热情。在接下来的采访之中,郑应文以既风趣幽默又专业严…

    2023年11月11日
  • 日本开始第二轮核污染水排海

    当地时间10月5日10时30分左右,日本东京电力公司福岛第一核电站核污染水第二轮排海开始。 按照东电此前公布的计划,第二轮计划排海的核污染水总量约为7800吨,排放周期预计为17天。 福岛第一核电站内储存有超过130万吨的核污染水。日本政府和东京电力公司以核电站内大量储水罐妨碍废堆作业为由,决定将经“多核素处理系统”处理并稀释后的核污染水排放入海。尽管排海决…

    2023年10月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信