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日

相关推荐

  • 哥本哈斯大学简介

    哥本哈根大学(Copenhagen University,在丹麦简称“哥大”)成立于1479年,当时由四个学院组成:神学、法学、医学和哲学。 它是丹麦最古老的大学,也是斯堪的纳维亚半岛第二古老的大学。 仅次于1477年成立的瑞典乌普萨拉大学(Uppsala University)。 哥本哈根大学是丹麦最大的综合性高等教育机构,其地位相当于中国的“北大“!这所…

    2024年12月8日
  • 中密歇根州立大学排名

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

    2025年2月11日
  • 美国建筑系大学排名_美国建筑系大学排名前100

    美国最好的建筑学大学推荐!美国建筑学专业大学排名! 至今,从美国院校毕业的建筑设计师已经遍布全球。也正是因此,越来越多的艺术学子想去美国就读建筑专业。那么美国最好的建筑学大学推荐,感兴趣的家长可以联系我们! 建筑学美国大学专业排名 1.麻省理工学院 麻省理工学院的建筑学院成立于1865年,是美国第一所建筑学院。作为具有悠久历史的独立学院,SA+P提供建筑设计…

    2024年4月23日
  • 韩国高丽大学(韩国高丽大学世界排名)

    高丽大学是韩国最大的综合大学之一,2024年QS世界排名第79名。与首尔大学和延世大学学。并称为韩国大学的一片天(S.K.Y.)。它始建于1905年,目前在韩国大学排名第二位,与中国"北京大学"建立友好院校关系。位于首尔市城北区安岩洞的高丽大 韩国语教育中心配备了生机勃勃的韩国语教育,最现代的教育环境和多媒体设施,专业的韩国语教师,韩国文…

    2023年9月28日
  • 河南医学院排名

    近日,2023年度中国医学院校/中国医院科技量值暨2019-2023五年总科技量值发布会召开。在现场发布的2023年度中国医学院校科技量值榜单中,郑州大学河南医学院位列全国第14位,较上一年度提升3位。 中国医学科技量值(Science and Technology Evaluation Metrics,STEM)是中国医学科学院于2018年首次创立的关于医…

    2024年11月20日
  • sussex大学就业前景

    ◆ ◆ ◆ ◆ ◆ 全文共 2178 个字 预计阅读时间 6 分钟 就在昨日,泰晤士高等教育(THE)发布了2023泰晤士高等教育世界大学影响力排名! 这是该排名发布的第5年,是世界上首个衡量高校对于联合国的可持续发展目标(SDGs)贡献的大学排名,在研究、管理、外展和教学四大方面对可持续发展的承诺。 在今年的排名评估中,一共搜集了来自115个国家/地区的1…

    2024年12月8日
  • 吉尔吉斯斯坦大学排名_吉尔吉斯斯坦大学排名一览表

    近日,吉尔吉斯斯坦(简称:吉国)教育与科学部提出的该国高等教育改革方案备受关注。 据吉国教育与科学部消息,该国2021年高校独立排名罗列了259个教育项目,同比增加17%。 数据显示,教育项目数量排名前四的高校包括: 排名 学校名称 1奥什国立大学 2吉尔吉斯斯坦国立农业大学 3吉尔吉斯斯坦国立技术大学 4吉尔吉斯斯坦国立工程交通与建筑大学 IAAR(独立认…

    2024年3月17日
  • 国家烟草专卖局原局长凌成兴被查

    据中央纪委国家监委网站10月23日消息,国家烟草专卖局原党组书记、局长凌成兴涉嫌严重违纪违法,目前正接受中央纪委国家监委纪律审查和监察调查。 相关报道 退休五年后 这位烟草局长被查! 据中央纪委国家监委网站23日消息,国家烟草专卖局原党组书记、局长凌成兴涉嫌严重违纪违法,目前正接受中央纪委国家监委纪律审查和监察调查。 凌成兴,男,1957年10月生,江西上高…

    2023年10月23日
  • 清华大学研究生难考吗

    考研与高考不同的一点是,考研是考试之前就要确定志愿,这一点就决定了考研的难度不可控,报的高了报的低了,都会影响考研成功。而不同高校的考研难度是不一样的,今天就来和大家说一说100所高校的考研难度。 首先,就考研难度来看,处于第一个层次的当属于39所985高校。当然,特别说明一下,这种划分只是相对的,比如部分行业特色高校——财经类高校,部分高校的考研难度超过了…

    2024年11月4日
  • 多伦多大学成绩要求

    #申请多伦多大学本科的详细时间表与申请指南 一、目标分析:为什么选择多伦多大学? 多伦多大学(University of Toronto)是加拿大乃至全球顶尖的学府之一,以其卓越的学术声誉、丰富的研究资源和多元化的校园文化吸引全球学子。普通中学的学生同样可以通过明确规划和努力,迈向这座梦想之门。 高考生冲刺多伦多大学,这份规划表堪称完美 二、申请多伦多大学的…

    2024年12月15日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信