一般的开发,我们都习惯把数据库密码配置在属性文件中,这样配置方便好用,但是缺点也是很明显的。这样配置的密码是静态的、明文的。一般都安全要求比较严格的公司,这些密码都会被统一管理,定期修改。我们需要动态获取密码。下面是结合SpringBoot实现动态获取密码的一个简单例子:

首先是applicationContext.xml配置

<bean id="dataSource" class="${spring.datasource.type}"init-method="init" destroy-method="close"><property name="driverClassName" value="${spring.datasource.driver-class-name}" /><property name="url" value="${spring.datasource.url}" /><property name="username" value="${spring.datasource.username}" /><property name="password"><bean class="com.XXX.ide.iedp.common.PasswordFactory"><property name="safe" value="AIM_ICORE_CLAIM_IEDP" /><property name="folder" value="root" /><property name="object" value="iedpopr" /><property name="pwdProvider" ref="passwordProvider" /></bean></property><property name="initialSize" value="${spring.datasource.initialSize}" /><property name="minIdle" value="${spring.datasource.minIdle}" /><property name="maxActive" value="${spring.datasource.maxActive}" /><property name="maxWait" value="${spring.datasource.maxWait}" /><property name="timeBetweenEvictionRunsMillis"value="${spring.datasource.timeBetweenEvictionRunsMillis}" /><property name="minEvictableIdleTimeMillis"value="${spring.datasource.minEvictableIdleTimeMillis}" /><property name="validationQuery" value="${spring.datasource.validationQuery}" /><property name="testWhileIdle" value="${spring.datasource.testWhileIdle}" /><property name="testOnBorrow" value="${spring.datasource.testOnBorrow}" /><property name="testOnReturn" value="${spring.datasource.testOnReturn}" /><property name="poolPreparedStatements" value="${spring.datasource.poolPreparedStatements}" /><property name="maxPoolPreparedStatementPerConnectionSize"value="${spring.datasource.maxPoolPreparedStatementPerConnectionSize}" /><property name="filters" value="${spring.datasource.filters}" /><property name="connectionProperties" value="${spring.datasource.connectionProperties}" /></bean><bean id="passwordProvider" class="com.XXX.ide.iedp.common.PasswordProvider"init-method="init"><property name="appId" value="${cyberark.appId}" /><property name="appKey" value="${cyberark.appKey}" /><property name="configPath" value="password.properties" /><property name="remoteUrl"value="${cyberark.remoteUrl}" /><property name="SSLVerify" value="true" /></bean>

接着是application.properties配置

jdbc.url=jdbc:postgresql://88。88.88.88:8888/iedp
jdbc.username=******
cyberark.appId=******
cyberark.appKey=******
cyberark.remoteUrl=https://******/getPassword

最后是获取密码的类与方法

这部分代码就不贴上来,其实主要的逻辑就有一个密码管理的统一接口,该接口接收跟数据库密码相关的参数,返回密码。主要实现是在PasswordProvider类中init方法里实现的。
该方法在applicationContext.xml配置启动druid连接池时,启动获取密码。

SpringBoot数据库密码动态配置相关推荐

  1. springboot集成Appollo动态配置

    pom新增依赖: <!-- https://mvnrepository.com/artifact/com.ctrip.framework.apollo/apollo-client --> ...

  2. SpringBoot—数据库初始化脚本配置

    关注微信公众号:CodingTechWork,一起学习进步. 介绍 在SpringBoot工程中,一般情况下,我们通过jpa或者mybatis自动生成表后,下次重启后就不会再重新生成表.但也不可避免会 ...

  3. java配置文件中数据库密码加密

    最近,有位读者私信我说,他们公司的项目中配置的数据库密码没有加密,编译打包后的项目被人反编译了,从项目中成功获取到数据库的账号和密码,进一步登录数据库获取了相关的数据,并对数据库进行了破坏. 虽然这次 ...

  4. mysql数据库druid密码加密_Druid数据库密码加密

    背景 数据库密码直接写在配置中,对安全来说,是一个很大的挑战.Druid为此提供一种数据库密码加密的手段ConfigFilter. druid版本为1.1.18. 加密 1.项目中引入依赖 com.a ...

  5. springboot动态多数据源配置和使用(从数据库读取数据源配置)(三)

    上两遍已经描述了动态多数据源的原理和基础实现了,前面的数据源配置都是从application.yml中配置多数据源的,这里再拓展补充一下其他场景,如何读取数据源不从application.yml中配置 ...

  6. SpringBoot 动态配置数据源

    SpringBoot 动态配置数据源 增删改查 概述 1.首先要搞明白为什么要用要动态数据源,在很多应用场景中,需要用到动态数据源,比如多个能源类项目,登录系统时根据用户信息切换到对应的数据库进行操作 ...

  7. springboot整合Quartz实现动态配置定时任务

    版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/liuchuanhong1/article/details/60873295 前言 在我们日常的开发中,很多 ...

  8. SpringBoot打成jra包启动时读取外部配置文件实现动态配置

    场景 若依前后端分离版手把手教你本地搭建环境并运行项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662 在上面 ...

  9. springboot 数据库链接池常用配置

    保留一下springboot常用的配置 spring.datasource.primary.url=jdbc\:mysql\://localhost\:3306/test?useUnicode\=tr ...

最新文章

  1. Sorenson Capital:值得投资的 5 种 AI 技术
  2. 计算机网络:三层ISP结构
  3. 指纹图谱相似度评价软件_不同产地佛手指纹图谱及模式识别研究
  4. 开源优势_企业开源的10大优势
  5. 一步一步写算法(之克鲁斯卡尔算法 上)
  6. android 分享qq微信朋友圈,H5微信JS-SDK实现分享朋友 朋友圈以及QQ自定义分享
  7. .plist 中各个key的含义
  8. 组态软件(Configure)
  9. 上海道宁联合德国think-cell,为您提供更便捷高效的PowerPoint插件
  10. ad中电容用什么封装_【AD封装】XH2.54mm座子插件贴片(带3D)
  11. 武汉都有哪些互联网公司?
  12. 2017校园招聘 携程编程题
  13. 基于企业战略的业务流程重组与外包(2) (转载)
  14. 古代汉语王力版复习重点
  15. udp ue4 通讯_UE4 UDP通信
  16. 「Matlab」“矩阵对矩阵求导的方法”讲解
  17. 将yyyyMMdd格式化为yyyy-MM-dd日期格式及DateFormateUtils、DateUtils的使用
  18. [源码和文档分享]基于QT实现的图的可视化程序地铁换乘指南系统
  19. 脑机接口专栏 | 如何分析静息状态的fMRI数据?(三)
  20. led可见光通信直方图均衡matlab,基于高通滤波和直方图均衡的钢轨裂纹红外图像增强技术...

热门文章

  1. 我的世界服务器如何修改权限设置,我的世界设置成员权限 | 手游网游页游攻略大全...
  2. 一个碌碌无为的程序员
  3. 信息系统开发方法以及其应用-系统分析师论文-2022年上半年必考知识点
  4. tkmybatis 默认值 问题
  5. uniapp 微信小程序开发 图片上传压缩
  6. java枚举值转化中文_多个枚举的国际化(枚举值的转换)
  7. ESP32开发日志之AiThinkerIDE_V1.0使用过程中的一个问题
  8. word标题和文字直接的空格
  9. linux主机挂软件,推荐Linux服务器面板宝塔软件
  10. 2021.03.12——学习公司项目