SpringBoot数据库密码动态配置
2017-06-07 20:48
183 查看
一般的开发,我们都习惯把数据库密码配置在属性文件中,这样配置方便好用,但是缺点也是很明显的。这样配置的密码是静态的、明文的。一般都安全要求比较严格的公司,这些密码都会被统一管理,定期修改。我们需要动态获取密码。下面是结合SpringBoot实现动态获取密码的一个简单例子:
该方法在applicationContext.xml配置启动druid连接池时,启动获取密码。
首先是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连接池时,启动获取密码。
相关文章推荐
- 物联网系统 : 网页控制远程wifi继电器开关,网页自适应屏幕。 分为登录,注册(短信验证),重置密码(短信验证),控制开关,配置开关(可动态新增或删除开关)
- google authenticator 配置动态密码登录
- 用友U8配置动态密码认证
- Spring Boot Security 学习笔记-根据登陆人动态配置权限-密码加密验证
- Spring 配置数据库动态密码
- 通达OA 办公系统(Office Anywhere)动态密码配置使用详解
- 利用netsh编写网卡动态配置的脚本
- Visual C++下ACE动态服务配置入门
- 程序中添加动态用户密码
- (iis建站配置问题)浏览(ASP)网页就要用户名和密码
- 中国网银安全分析:动态密码锁
- 动态的为你的Winform配置Dll目录
- phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
- JSP中数据源的绑定方法(Resin配置文件中和代码动态配置的方法)
- Castle ActiveRecord 使用动态填写参数方式配置数据库连接
- 如何清除进入console配置口的密码
- 存储过程动态配置
- asp.net中的存储过程的动态配置2
- 大容量虚拟主机的动态配置
- 利用程序动态管理Web.config文件的配置