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日

相关推荐

  • 纽卡斯尔是红砖大学吗_纽卡斯尔大学是红砖大学吗

    在英国留学,会是什么样? 在英国生活,又是什么样? 很多向往英国的都会在心里憧憬~ 而在英国的也必然会将憧憬和现实对比 然后你会发现 想象中的英国和实际中的英国 实在是“相差太大”了! 牛X学校,不只有牛津剑桥 没去英国前,大家脑海里印象最深的英国名校,大概就是牛津剑桥;好比家长总给孩子念叨的:好好学习,考清华北大。但实际上,英国的牛X名校,远不止于这两所。…

    2024年2月23日
  • 首都医科大学专科学院

    第一章 总则 第一条 为保证学校普通本科、高职(专科)招生工作的顺利进行,维护学校和考生合法权益,依据《中华人民共和国教育法》、《中华人民共和国高等教育法》以及教育部和北京市关于做好普通高等学校招生工作的有关文件精神,结合学校实际情况,制定本章程。 第二条 学校名称:首都医科大学;上级主管部门:北京市教育委员会。 第三条 首都医科大学是北京市政府、国家卫生健…

    2025年2月17日
  • 南京财经大学梅西学院是几本

    扬子晚报网5月21日讯(通讯员 施卫娟 记者 杨甜子)近日,南京财经大学梅西学院正式获教育部批准为非独立法人中外合作办学机构。 记者了解到,梅西学院是南京财经大学获批的首个中外合作办学机构,也是梅西大学在中国设立的首个中外合作办学机构,更是新西兰高校在江苏省设立的首个中外合作办学机构,是顺应中新教育关系深化、合作领域拓展的现实举措。梅西学院的设立是南京财经大…

    2024年12月17日
  • 法国建筑学院排名_法国建筑学院排名前十

    据《费加罗报》学生版12月12日报道,2023年法国工程师院校排名出炉,前5名分别是:巴黎综合理工学院、中央理工学院、巴黎高等矿业学校、国立路桥学校、巴黎高等电信学校。 该排名主要考察学校的学术成就、国际影响力和就业能力。每所学校各有特色,如巴黎综合理工学院的毕业生更容易进入管理层岗位,而巴黎高等矿业学校的毕业生更倾向继续从事研究。此外,排名第11位的巴黎高…

    2024年4月16日
  • 初中去哪个国家留学好

    现在我身边问我关于孩子留学的朋友,并不是高考后大学留学的,而大多数都是中考以后就想出国,不想继续沉溺在国内教育内卷的漩涡之中。 英美留学是主流,却有不少家长开始关注新西兰,这个毫不起眼的“孤独国家”,因为新西兰的性价比更高! 新西兰是低龄留学生的天堂,自然环境优美,签证zc友好,纽村注重课堂教育的同时,兼顾知识的运用。 ‬新西兰中学都有哪些课程 大多数新西兰…

    2024年6月1日
  • 德州学院学费平台

    最近被德州学院成人高考录取的考生们,都迫不及待地想要知道德州学院成人高考报的时间以及缴费流程相关事项,今天小编就为大家整理出来了。 德州学院成人高考缴费时间 2024级新生及其他年级缴费时间为2024年1月3日—1月15日。 德州学院成人高考缴费方式 由学生本人在德州学院继续教育学院教学管理平台上自助缴纳学费,支持微信、银联等付费方式,缴费金额以学校教学管理…

    2024年10月29日
  • 波恩大学相当于中国什么大学

    波恩(德语:Bonn)是北莱茵-威斯特法伦南部莱茵河畔的一个城市,位于科隆以南约30公里,科布伦茨以北约60公里。 拥有2000年历史的波恩是德国最古老的城市之一。它曾是科隆公国的首都,直至18世纪末。1770年12月16日作曲家贝多芬出生在这座城市。 波恩莱茵弗里德里希·威廉大学 (Rheinische Friedrich-Wilhelms-Univers…

    2024年12月19日
  • 曼彻斯特大学什么专业好

    曼彻斯特城是世界上最早的工业城市之一,相应的曼彻斯特大学也是世界前50的大学,2020年最新的QS排名27名。曼彻斯特大学教学严谨,创新思想已经成为其教学传统。快跟立思辰留学一起来了解一下曼彻斯特大学有哪些强势专业吧。 一、计算机科学 Computer Science录取要求: 1. 就读于211,985学校的学生,本科均在在80分以上;双非学生,85以上;…

    2024年5月16日
  • 纽约电影学院北京电影学院

    北京电影学院2024年出国留学培训项目招生简章 一、院校简介 经北京市教委批准,北京电影学院成立了北京电影学院出国留学基地。在此基础上,北京电影学院与中国(教育部)留学服务中心建立战略合作伙伴关系。北京电影学院依托自身的教育资源,引进和借鉴英美大学优质的教育资源和教学模式,与国外多所大学签署合作协议,开创国内首个电影艺术专业国际留学项目,为学生顺利出国留学提…

    2025年4月1日
  • 乔治华盛顿大学排名到70了

    乔治华盛顿大学世界排名 乔治华盛顿大学(The George Washington University)是一所位于美国首都华盛顿特区的世界著名私立综合性大学。其世界排名根据不同的年份和排名机构有所差异。以下是乔治华盛顿大学近年来的部分世界排名情况: QS世界大学排名2024年:乔治华盛顿大学在全球QS世界大学排名中的综合排名为第340名。2023年:乔治华…

    2024年11月18日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信